1. 程式人生 > >不同buildType下的區別構建配置方式

不同buildType下的區別構建配置方式

需求背景:在測試環境中伺服器地址是1.0.0.127,而在正式環境為www.baidu.com。
我們可以通過在不同的buildType下的分別打包來滿足這個需求。

其中有如下幾個方法:

1、修改資原始檔

在不同的buildType下,我們可以定義一系列的資原始檔,如string

    buildTypes {
        release {

            resValue("string", "server_host", "www.baidu.com")
        }

        debug {

            resValue("string"
, "server_host", "1.0.0.127")
} }

然後我們在程式碼裡就可以直接引用:

String serverHost = getResources().getString(R.string.server_host)

2、在BuildConfig中新增成員變數

    buildTypes {

        release {

            buildConfigField("String", "SERVER_HOST", "\"www.baidu.com\"")
        }

        debug {

            buildConfigField("String"
, "SERVER_HOST", "\"1.0.0.127\"") } }

然後我們可以直接在程式碼中引用SERVER_HOST變數:

String serverHost = BuildType.SERVER_HOST;

BuildType是一個在構建過程中自動生成的一個類,每一個構建變體都會對應一個BuildConfig類,buildType為debug型別的BuildConfig如下:

public final class BuildConfig {

  public static final boolean DEBUG = Boolean.parseBoolean("true"
); public static final String APPLICATION_ID = "your application id"; public static final String BUILD_TYPE = "debug"; public static final String FLAVOR = ""; public static final int VERSION_CODE = 1; public static final String VERSION_NAME = "1.0"; // Fields from build type: debug public static final String SERVER_HOST = "1.0.0.127"; }

這種方式有個缺點是無法在manifest.xml檔案中引用。