在實際開發中,網絡請求的根域名通常是不同的版本對應不同的服務器,比如我們現在分爲開發、測試、預發佈和正式,四個環境,以前是手動註釋代碼來更換環境,每次要操作很多,萬一遺漏一處,可能就會出現問題。最好的方法就是根據不同的版本,自動構建相應的環境,這樣就不會出現由於人爲因素導致的問題。
module中的build.gradle的buildType一般如下:
buildTypes {
debug {
// 測試環境配置
}
release {
// 正式環境配置
}
}
只有debug和release兩個版本,然而我們的環境是四個,於是再增加兩個:
buildTypes {
dev {
// 開發環境配置
}
debug {
// 測試環境配置
}
preRelease {
// 預發佈環境配置
}
release {
// 正式環境配置
}
}
好,現在我們可以看到在打包的環境,就有4個選項供我們選擇了。
現在問題是,如何根據不同的版本獲取不同的設定值。buildTypes 中的buildConfigField 可以幫助我們實現:
buildTypes {
dev {
// 開發環境配置
buildConfigField "String", "BASE_URL", '"http://開發.com/"'
}
debug {
// 測試環境配置
buildConfigField "String", "BASE_URL", '"http://測試.com/"'
}
preRelease {
// 預發佈環境配置
buildConfigField "String", "BASE_URL", '"http://預發佈.com/"'
}
release {
// 正式環境配置
buildConfigField "String", "BASE_URL", '"http://正式.com/"'
}
}
buildConfigField參數分別爲參數類型、參數名字、參數值。每個module都會根據buildTypes 在build目錄下自動生成一個BuildConfig.java的文件:
public final class BuildConfig {
// ...
public static final String BASE_URL = "http://api.t1.ctsax.com/";
}
然後我們就可以在java代碼中使用了:
/**
* 描述:網絡請求配置類
*/
public final class Config {
// ...
public static final String BASE_URL = BuildConfig.BASE_URL;
}