最近公司有个新需求,按照之前的项目换个名字,logo及部分资源文件重新打包个新的app
实现思路
1.拷贝一份项目更换名字、logo等 (效率低,麻烦 ) ❌
2.多渠道打包 (方便,快捷) ✅
实现方法
项目下build.gradle>android下新以下代码
android {
...
...
//多渠道打包
productFlavors {
//百度渠道
baidu {
//修改包名
applicationId "com.product.baidu"
//修改app名字,string资源下不能包含"app_name"
resValue "string", "app_name", "百度"
//修改AndroidManifest.xml部分字段(包含logo)
manifestPlaceholders = [CHANNEL_VALUE: "baidu",app_icon: "@mipmap/logo"]
}
//小米渠道
xiaomi {
applicationId "com.product.xiaomi"
resValue "string", "app_name", "小米"
//修改AndroidManifest.xml部分字段(包含logo)
manifestPlaceholders = [CHANNEL_VALUE: "xiaomi",app_icon: "@mipmap/logo"]
}
}
替换Logo
从上面代码中可以看到两个渠道中都有这行代码:
百度
manifestPlaceholders = [CHANNEL_VALUE: "baidu",app_icon: "@mipmap/logo"]
manifestPlaceholders = [CHANNEL_VALUE: "xiaomi",app_icon: "@mipmap/logo"]
这行代码是向AndroidManifest.xml传值,但是AndroidManifest.xml需要使用占位符接收
<application
android:name=".MoneyApp"
android:allowBackup="true"
android:icon="${app_icon}" <!--占位符,接收上面Gradle传来的值-->
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/NoActionBar"
tools:replace="android:icon,android:theme">
...
...
</application>
但是上面两个渠道传的值都是@mipmap/logo图片,这里需要使用同名不同图片的资源文件,同名文件是不能在同一个文件夹的,这里需要在app/res/下/main同级目录创建渠道单独文件夹
注意!文件夹名字一定要和渠道名相同,然后再各自渠道文件夹下创建logo资源文件
当打包时,各渠道会优先加载各自渠道文件夹的资源,就可以实现不同的logo了
最后签名打包就可以啦,两个渠道包分别在baidu和xiaomi文件夹下~
————————————————
版权声明:本文为CSDN博主「lvkaixuan」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/lvkaixuan/article/details/83617091