不同buildType下的區別構建配置方式
阿新 • • 發佈:2019-02-10
需求背景:在測試環境中伺服器地址是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檔案中引用。