感谢 多渠道打包之动态修改App名称,图标,applicationId,版本号,添加资源
在测试机上想线上包和测试包共存,那肯定就要修改ApplicationId
啦,
但是每次修改再同步多麻烦,还容易忘记
节约生命的做法
android {
compileSdkVersion 25
buildToolsVersion "25.0.3"
defaultConfig {
applicationId "com.jianshu.default"
...
}
buildTypes {
debug {
//...
resValue "string", "app_name_jianshu", "debug包"
}
release {
//...
resValue "string", "app_name_jianshu", "简书APP"
}
}
productFlavors {
xiaomi {}//小米
yingyongbao {} //应用宝
jtest {
// 每个环境包名不同
applicationId "com.jianshu.test"
// 动态添加 string.xml 字段;
// 注意,这里是添加,在 string.xml 不能有这个字段,会重名!!!
resValue "string", "app_name_test", "测试包"//会被buildTypes覆盖
}
}
}
上面的app_name_jianshu
就是Application中引用的字段,一般默认都是app_name
,需要将strings
中这个字段删除,(注意如果第三方库中有这样的字段那么会去引入第三方里面的)
然后在手动打包时选择不同的渠道就可以打出不同包名(applicationId)
的包了,同时应用名称也可以改变。
发现在平时调试的时候,如果没有特别标注,都会去引入productFlavors
下其中一个渠道配置。所以app_name
没有设置时在调试的时候得app_name
就可以知道了。
在平时Run
调试的时候,app_name
是怎么决定的呢?
这就要看Build Variants
了。
在
Build Variants
可以选择debug
调试时使用的渠道,app_name
也就是渠道对应的app_name
了
配置说明:
- 调试时打出的包名为
com.jianshu.default
应用名称为debug包
- 选择线上渠道包名为
com.jianshu.default
应用名称为简书APP
- 选择
jtest
渠道包名为com.jianshu.test
应用名称为简书APP
1和2 会互相覆盖安装
3则可以和1或2共存