Android多渠道打包の根据渠道来加载相应的资源文件及Java代码

Android多渠道打包の根据渠道来加载相应的资源文件及Java代码

方案需求

由于不同渠道,对项目会进行一定的修改,比如图片、文字等,所以需要根据渠道来加载相应的资源文件,以达到显示相应渠道定制的app,同时不需要新建module方式进行实现

根据渠道,定制资源

  • 配置渠道,在项目gradle中进行渠道配置
productFlavors {    
      demo1 {        
            applicationId 'com.hehe.demo1'    
      }    
      demo2 {        
            applicationId 'com.hehe.demo2'    
      }
}
  • 新建文件夹,找到app\src\路径,新建文件夹为刚刚配置的渠道名,即demo1 、demo2,注意文件夹名字必须和build.gradle里的渠道名对应,demo1 、demo2目录与main目录同级。


    新建渠道目录.png
  • 添加需要替换的资源,在打包时,如果资源的名称与app\src\main目录下res的资源一样,则会进行替换为当前的同名资源


    添加需要替换的资源.png

比如我们现在替换app的logo图片,及名称

  • app\src\main 下的清单文件
<application
        android:name=".MyApplication"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>

                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>

    </application>

打包结果,能够成功替换app的logo及名称

结果.png
加载不同的Java代码同理,就不在此说明了。。。
其他方法也可以实现,如新建module,对应渠道添加相应的module依赖,也能实现该效果,不过module过多的话,会导致项目编译速度变得慢。
  • 非常慢!
  • 非常非常慢!!
  • 非常非常非常慢!!!

Android自动打包

这个可以结合我前面两篇关于Android集成Jenkins实现自动打包功能

参考

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,491评论 25 709
  • 这一章主要针对项目中可以用到的一些实用功能来介绍Android Gradle,比如如何隐藏我们的证书文件,降低风险...
    acc8226阅读 12,293评论 3 25
  • 这个名字的由来,大抵是一年前,当初刚从海院跑完步,走在嘉庚路的时候fumasterlin在微信上call我,说让我...
    thibo阅读 2,767评论 0 0
  • 我是Lem0,自学倡导者,执迷于“不务正业”,被批评“旁门左道”。我注册并使用简书,希望能够记录一些我记不住的事情...
    Lem0阅读 9,965评论 5 11
  • 01 人总会在一段时间内,莫名的感觉到痛苦,就像佛学上所讲的那样,终生皆苦,虽然有时候你根本搞不清苦到底是什么,这...
    时间如梦阅读 4,214评论 1 5