配置buildConfigField
在開發(fā)中經(jīng)常分測試環(huán)境和正式環(huán)境,每次發(fā)布版本總是要修改服務(wù)器地址或者端口號赞辩。其實可以在build.gradle中為測試環(huán)境和正式環(huán)境配置不同的服務(wù)地址,在編譯的時候會自動根據(jù)當前的buildType選擇不同的服務(wù)地址诗宣。
android {
buildTypes {
debug {
buildConfigField 'String', 'domain', '"http://192.168.0.1:5555/MyProject/"'
}
release {
buildConfigField 'String', 'domain', '"http://192.168.0.1:8888/MyProject/"'
}
}
}
在自動生成的類BuildConfig中會新增domain字段想诅,且在不同的buildType環(huán)境下的值是不一樣的,如下:
測試環(huán)境的值
public final class BuildConfig {
public static final boolean DEBUG = Boolean.parseBoolean("true");
public static final String domain = "http://192.168.0.1:5555/MyProject/";
}
生產(chǎn)環(huán)境的值
public final class BuildConfig {
public static final boolean DEBUG = Boolean.parseBoolean("true");
public static final String domain = "http://192.168.0.1:8888/MyProject/";
}
使用BuildConfig
直接用BuildConfig調(diào)用来破,例如:
String url = BuildConfig.domain;
注意事項
由于我們這里介紹的buildConfigField是String類型,所以要注意以下例子徘禁,前三種寫法都是可以的,但是后兩種是錯誤的
buildTypes {
debug {
// 單引號寫法
buildConfigField 'String', 'string1', '\"string1value\"'
// 雙引號寫法
buildConfigField "String", "string2", "\"string2value\""
// 單雙引號的寫法娘荡,最簡潔不用轉(zhuǎn)義,推薦該寫法
buildConfigField 'String', 'string3', '"string3value"'
// 以下兩種寫法都沒轉(zhuǎn)義炮沐,會報錯
buildConfigField 'String', 'string4', 'string4value'
buildConfigField "String", "string5", "string5value"
}
}
結(jié)果如下,可以看到最后兩個生成的值沒加雙引號大年,不是字符串會報錯,在IDE中會標紅顯示錯誤翔试。
public final class BuildConfig {
public static final String string1 = "string1value";
public static final String string2 = "string2value";
public static final String string3 = "string3value";
public static final String string4 = string4value; // IDE中string4value的顏色是紅色
public static final String string5 = string5value; // IDE中string5value的顏色是紅色
}