今天在做项目的时候,经理要求在项目编译的时候根据build的配置来执行不同的代码,从而打出不同功能的apk,这个我觉得要写脚本,索性经理给了我一段配置代码解决了这个问题:
在app下面的build.gradle里面添加如下代码:
productFlavors {
anyone {
}
wine {
}
}
applicationVariants.all { variant ->
variant.outputs.each { output ->
output.outputFile = new File(
output.outputFile.parent + "/${variant.buildType.name}",
"DVBPlayer-"+"${variant.buildType.name}-${variant.versionName}-${variant.productFlavors[0].name}.apk".toLowerCase())
}
}
然后在工程的\build\generated\source\buildConfig\wine\release\com\hisu\dvbplayer\BuildConfig.java 有这个文件。
这个就是配置文件。因为我在gradle里面配置了两个版本一个是wine,一个是anyone。所以在代码里面判断的时候可以根据BuildConfig来执行不同的代码功能,并且打出不同的apk。
比如说:wine版本的时候我要做升级操作,anyone版本的时候我要做数据库操作,伪代码如下:
if("wine".equals(BuildConfig.FLAVOR)){
//这个做升级操作的代码
}else{
//这里做数据库操作的代码
}
这样的话就会有两个版本的apk,一个是升级操作的,一个是数据库操作的,两个互不影响;
另外的话,打包生成不同apk的时候只需要在下图中选择不同的版本即可: