版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/f552126367/article/details/86502481
一、前言
productFlavors是多版本打包的实现方式,正常开发中一般不会用到,但是项目中如果需要打包多个不同包名的版本,笨方法就是多个工程,但是维护起来实在是太麻烦了,但可以使用productFlavors,可以对APP名称、APP加载内容、APP中显示的文字进行分别编译。
二、实现代码
1、在build中配置
productFlavors {
//新建产品ApkTest
apktest {
//程序包名
applicationId "com.wmj.a"
//不同渠道号
manifestPlaceholders = [UMC:"product-Complete"]
//versionName
versionName "1.0.0"
//versionCode
versionCode 1
//APP名称,可以在androidMainfest中引用
resValue "string", "app_name", "测试APK"
//可以在程序中通过buildConfig引用
buildConfigField "String", "TITLE", '"测试APK"'
}
//新建产品BTest
BTest {
//程序包名
applicationId "com.wmj.b"
//不同渠道号
manifestPlaceholders = [UMC:"product-Temp"]
//versionName
versionName "2.1.1"
//versionCode
versionCode 2
//APP名称,可以在androidMainfest中引用
resValue "string", "app_name", "正式APK"
//可以在程序中通过buildConfig引用
buildConfigField "String", "TITLE", '"正式APK"'
}
2、引用build中的resValue方式
相当于在res--values下的引用方式相同
3、引用资源文件方式:
需要在src下创建资源文件夹,如下图所示,则会根据文件名称自动引入不同的图片。
4、如果有debug和release的不同版本的配置文件,可以配置在defaultConfig或buildType中配置Mainfestplacehoders:
android {
compileSdkVersion 23
buildToolsVersion '25.0.0'
defaultConfig {
manifestPlaceholders = [STAT_KEY : "1111111111111",
STAT_CHANNEL: "rrrrF"]
}
5、引用方式:在androidMainfest.xml中如下代码
android:value="${STAT_KEY}"