我們開發了一些模塊並使用相同的連接器類。我們在靜態數據中使用Mow。調用服務器在應用程序和開發/生產之間是不同的。在運行時從gradle獲取數據
我有一些問題:
是有可能在運行時得到數據的gradle?
當gradle構建模塊(通過構建類型使用)和gradle.properties時,是否可以在我的類的變量中生成/設置數據?
我們開發了一些模塊並使用相同的連接器類。我們在靜態數據中使用Mow。調用服務器在應用程序和開發/生產之間是不同的。在運行時從gradle獲取數據
我有一些問題:
是有可能在運行時得到數據的gradle?
當gradle構建模塊(通過構建類型使用)和gradle.properties時,是否可以在我的類的變量中生成/設置數據?
我認爲productFlavors
正是你想要什麼:
要使用它們,你必須添加到您的build.gradle你的模塊下面的代碼:
android{
...
productFlavors {
test1 {
applicationId "your.package.application.test1"
}
test2 {
}
}
...
}
後那麼您必須在src
文件夾中創建與構建變體名稱相同的文件夾:例如對於test1
您必須創建test1文件夾。
在接下來的步驟中,您必須添加res
文件夾TEST1文件夾,例如添加values/strings.xml
要測試你可以添加:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Your app 2</string>
</resources>
現在,當您選擇test1的構建變量您應用程序將具有名稱「您的應用程序2」
要更改構建變體,您必須使用任務或您可以在下面的視圖中設置它:
你也可以用你在你的應用程序代碼的build.gradle
buildTypes {
release {
// ...
buildConfigField "boolean", "CHROMECAST", "false"
buildConfigField "boolean", "NOTIFICATION_COVER", "false"
buildConfigField "String", "API_URL", "\"https://your/production/url/\""
}
debug {
// ...
buildConfigField "boolean", "CHROMECAST", "false"
buildConfigField "boolean", "NOTIFICATION_COVER", "true"
buildConfigField "String", "API_URL", "\"https://your/development/url\""
}
}
buildConfigField
可以通過例如訪問這些變量BuildConfig.CHROMECAST
或BuildConfig.API_URL
對於資源,您可以爲您的調試版本創建特定資源src/debug/res
例如,一個特殊的應用程序圖標或覆蓋應用程序名稱
如果他只想要在開發/調試和發佈之間進行區分的東西,那麼構建產品風味是過度的。 – Dodge 2015-02-24 08:26:27
據我所知,你也可以在productFlavors中配置'buildConfigField'。對我來說,productFlavors提供了更多的可能性。這就是我提出這個建議的原因。 :) – 2015-02-24 08:42:53
當然可以。但產品風味的目標是提供不同版本的應用,例如免費vs付費或playstore vs亞馬遜,而不是發展vs發佈。而我的建議(buildTypes中的'buildConfigField'在這個特定情況下更有意義) – Dodge 2015-02-24 13:47:05