productFlavors
一、概述
因为公司项目需要从主体软件中,分出一个公版的APP,公版APP在软件名称、versionCode、versionName、软件图标、部分界面需要差异化。查阅相关资料,决定通过productFlavors来实现部分图片以及界面的差异化。
二、实现
软件名称、versionCode、versionName差异化
在build.gradle文件
defaultConfig {
//不涉及直接填写,不填写3.0之后会报错。
flavorDimensions ""
}
//这里的内容会替换修改defaultConfig里面相应的内容
productFlavors {
//公版
pri {
//这种格式可以动态添加相应的资源内容,注意这里是添加不是修改,会和本身同命名的资源冲突。
resValue 'string', 'app_name', '我是公版'
//这里会替换修改defaultConfig里面相应的内容
versionCode 4
versionName "Version 5.0.0"
}
//公司
pub {
resValue 'string', 'app_name', '我是私版'
versionCode 21
versionName "Version 5.1.0"
}
}
软件图标、部分界面差异化
通过创建与main同级的文件实现图片资源以及界面差异化
文件名称要与productFlavors中对应,我这里用的是pri和pub。
1、pri和pub与main中res文件的目录路径与main完全相同的则替换,不同的则合并。
2、pri和pub与main中java同名文件会冲突,不同则合并。
我这里在res中放置两个同名图片ic_lanucher.png实现软件图标的差异化,在java文件中实现部分界面的差异化。