我剛剛轉移到了android gradle構建系統,並且我不清楚如何設置常量值。用gradle設置常量值
例如我已經
API.java
包含
BASE_URL = "http://debug.server.com"
但當gradle這個構建版本我需要BASE_URL
是"http://release.server.com"
如何更換在構建這個時間值?
我剛剛轉移到了android gradle構建系統,並且我不清楚如何設置常量值。用gradle設置常量值
例如我已經
API.java
包含
BASE_URL = "http://debug.server.com"
但當gradle這個構建版本我需要BASE_URL
是"http://release.server.com"
如何更換在構建這個時間值?
Gradle生成一個名爲BuildConfig
的類,該類包含靜態成員(例如布爾型爲DEBUG
,對於調試變體,該類型設置爲true)。
你既可以查詢這個在Java中,像這樣:
if (BuildConfig.DEBUG) {
BASE_URL = "http://debug.server.com"
} else {
BASE_URL = "http://release.server.com"
}
或作爲一個班輪同樣的事情:
BASE_URL = BuildConfig.DEBUG ? "http://debug.server.com" : "http://release.server.com"
OR
你可以實際上設置了BASE_URL
裏面的BuildConfig
類的gradle使用像這樣:
android {
buildTypes {
debug {
buildConfigField "String", "BASE_URL", '"http://debug.server.com"'
}
release {
buildConfigField "String", "BASE_URL", '"http://release.server.com"'
}
}
}
注意單,雙引號在周圍的gradle價值,爲他人在評論中提到。這樣,雙引號就成爲了價值的一部分。
結果,靜態參考BuildConfig.BASE_URL
將指向對應的URL(即,「debug.server.com」調試「 release.server.com」釋放)
回答菲費爾羊的是正確。只想爲兩個以上的環境留下解決方案。
兩種風格的舞臺和生活。
productFlavors {
staging {
...
}
production {
...
}
}
整個應用程序配置依賴於當前的ENV。使用:
public static String ENV_DEVELOPMENT = "development";
public static String ENV_STAGING = "staging";
public static String ENV_PRODUCTION = "production";
ENV = BuildConfig.DEBUG ? ENV_DEVELOPMENT : BuildConfig.FLAVOR;
我可以在本地測試時在所有不同的ENV之間切換,但如果發佈則強制進行分段/實時設置。
非常感謝,會用第二種方法,非常靈活 – 2014-10-22 14:41:00
不客氣。隨意時,你可以標記爲答案;) – 2014-10-22 19:10:22
你的回答只適用於我,如果我使用雙引號,而不是單一的,而逃脫的URL字符串,像這樣: 的Android { buildTypes { 調試{ buildConfigField「字符串「,」BASE_URL「,」\「http://debug.server.com \」「 } release { buildConfigField」String「,」BASE_URL「,」\「http://release.server。com \「」 } } } – 2015-02-26 15:50:09