你說depended on the environment(debug, compile, etc..)
是什麼意思還不太清楚。如果你希望你的本地計算機和CI
服務器實例上有不同的常數,你可以把你的常量到local.properties
文件:
sdk.dir=/android-sdk-macosx
HTTP_METHOD="GET"
HTTP_URL="hello/path"
HTTP_HOST="google.com/"
而在你build.gradle
畢業生這樣說:
android{
buildTypes{
applicationVariants.all { variant ->
Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())
buildConfigField "String", "HTTP_HOST", properties.getProperty('HTTP_HOST')
buildConfigField "String", "HTTP_URL", properties.getProperty('HTTP_URL')
buildConfigField "String", "HTTP_METHOD", properties.getProperty('HTTP_METHOD')
}
}
}
然後,他們將可通過靜態常量在您的java代碼中獲得:
BuildConfig.HTTP_HOST
BuildConfig.HTTP_METHOD
BuildConfig.HTTP_URL
如果您需要使用debug
個release
版本的應用,你需要在相應的buildTypes
塊來定義常量:
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())
buildConfigField "String", "HTTP_HOST", properties.getProperty('HTTP_HOST_RELEASE')
buildConfigField "String", "HTTP_URL", properties.getProperty('HTTP_URL_RELEASE')
buildConfigField "String", "HTTP_METHOD", properties.getProperty('HTTP_METHOD_RELEASE')
}
debug {
Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())
buildConfigField "String", "HTTP_HOST", properties.getProperty('HTTP_HOST_DEBUG')
buildConfigField "String", "HTTP_URL", properties.getProperty('HTTP_URL_DEBUG')
buildConfigField "String", "HTTP_METHOD", properties.getProperty('HTTP_METHOD_DEBUG')
}
}
PS當然,你可以把不是使用local.properties
文件的常量右轉入build.gradle
文件:
buildConfigField "String", "HTTP_HOST", "google.com"
最好的方法是將它們作爲靜態成員存儲在單獨的類文件中。所以你在做什麼是完美的。 – priyankvex
投票我的問題的人,請提供解釋爲什麼你的投票下來或只是繼續滾動..我無法知道我做錯了一個投票下來。謝謝。 –