android studio根據配置打不同功能的apk
阿新 • • 發佈:2019-01-22
今天在做專案的時候,經理要求在專案編譯的時候根據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的時候只需要在下圖中選擇不同的版本即可: