感谢 多渠道打包之动态修改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应用名称为简书APP1和2 会互相覆盖安装 3则可以和1或2共存