def isAppId = 1;
if(isAppId == 1 ) { versionCode 15 versionName "1.0" flavorDimensions "15" resValue "string", "app_name", "hehe" buildConfigField 'int','firmId',"2" applicationId "com.xxx.b" } else if(isAppId == 2 ) { versionCode 15 versionName "1.0" flavorDimensions "15" resValue "string", "app_name", "haha" buildConfigField 'int','firmId',"3" applicationId "com.xxx.a" }
productFlavors{ if (isAppId == 1 ) { trf { manifestPlaceholders = [icon:"@mipmap/ic_launcher"] } } else if (isAppId == 2 ) { duowei { manifestPlaceholders = [icon:"@mipmap/ic_launcher"] } }
}
<application android:name=".SophotFixApplication" android:allowBackup="true" android:icon="${icon}" android:label="@string/app_name" android:largeHeap="true" android:supportsRtl="true" android:theme="@style/SlideTheme"要点介绍
1:applicationId 是gradle打包后变更包名的条件,
2:resValue 更改APK名称,更改清单文件中的@string/app_name,但要把values.xml中的app_name删除掉才行,要不会报错
3:buildConfigField:是为了BuildConfig文件中添加config变量,自定义变量名称,然后代码中直接调用就可以,
第一个参数是类型,第二个参数是自定义的名称,第三个参数是变量,定义什么类型的变量,对应Config中就会出现什么类型的变量
4:flavorDimensions 定义一定要跟versioncode一致,就是给flavor一个控制范围,这是为了控制icon
5:productFlavores 中如果想变更icon的话就在flavores中添加mainfestPlaceholders 可以变更app_name和icon,
我写的是更改icon,如果想更改app_name : [label:"hehe",icon:"@minmap/ic_launcher" ]
这样写就在本地gradle中通过参数配置完成不同包名和icon了,如果后台强大的话可以通过listions权限控制