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目录同级。 添加需要替换的资源,在打包时,如果资源的名称与app\src\main目录下res的资源一样,则会进行替换为当前的同名资源
比如我们现在替换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及名称
加载不同的Java代码同理,就不在此说明了。。。
其他方法也可以实现,如新建module,对应渠道添加相应的module依赖,也能实现该效果,不过module过多的话,会导致项目编译速度变得慢。
非常慢!非常非常慢!!非常非常非常慢!!!
Android自动打包
这个可以结合我前面两篇关于Android集成Jenkins实现自动打包功能 - Jenkins搭建Android自动打包 - Jenkins搭建Android自动打包二之设置渠道打包
参考
Android在开发中的实用技巧之多渠道打包为给个渠道定制不同的代码和资源
转载请注明原文地址: https://ju.6miu.com/read-677245.html