1. 程式人生 > >android studio根據配置打不同功能的apk

android studio根據配置打不同功能的apk

今天在做專案的時候,經理要求在專案編譯的時候根據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的時候只需要在下圖中選擇不同的版本即可:
這裡寫圖片描述