背景
最近遇到一个需求,主体代码不变,需要的是根据applicationId:"com.xxx.android.packpage"来选择不同的资源来打不同的包(马甲包)。思路其实很简单,所有的资源名都必须一样,然后在build.gradlet里添加productFlavors{}。
1.build.gradlet 添加productFlavors
其中buildConfigField可以设置全局变量,通过编译后可在在Activity 上调用BuildConfig.xx即可读取。
productFlavors {
test {
applicationId "com.xx.test"
versionCode 1
versionName "1.0.0"
buildConfigField("String", "xx", "\"xx\"")
}
}
复制代码
配置资源
1.在项目app->src->新建test资源目录
如图:
2.编译通过后
3.打包移除assets文件下资源
1.移除所有
android.applicationVariants.all { variant ->
if (variant.buildType.name == 'release') {//release版本
variant.mergeAssets.doLast {
//删除assets文件夹下的所有zip文件
//includes: ['*.zip']
delete(fileTree(dir: variant.mergeAssets.outputDir))
}
}
复制代码
2.指定文件移除
如 .zip,.class等文件
android.applicationVariants.all { variant ->
if (variant.buildType.name == 'release') {//release版本
variant.mergeAssets.doLast {
//删除assets文件夹下的所有zip文件
//includes: ['*.zip']
delete(fileTree(dir: variant.mergeAssets.outputDir,includes: ['*.zip','*.class']))
}
}
}
复制代码