2015-02-24 93 views
0

我們開發了一些模塊並使用相同的連接器類。我們在靜態數據中使用Mow。調用服務器在應用程序和開發/生產之間是不同的。在運行時從gradle獲取數據

我有一些問題:

  1. 是有可能在運行時得到數據的gradle?

  2. 當gradle構建模塊(通過構建類型使用)和gradle.properties時,是否可以在我的類的變量中生成/設置數據?

回答

0

我認爲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」

要更改構建變體,您必須使用任務或您可以在下面的視圖中設置它:

enter image description here

+0

如果他只想要在開發/調試和發佈之間進行區分的東西,那麼構建產品風味是過度的。 – Dodge 2015-02-24 08:26:27

+0

據我所知,你也可以在productFlavors中配置'buildConfigField'。對我來說,productFlavors提供了更多的可能性。這就是我提出這個建議的原因。 :) – 2015-02-24 08:42:53

+0

當然可以。但產品風味的目標是提供不同版本的應用,例如免費vs付費或playstore vs亞馬遜,而不是發展vs發佈。而我的建議(buildTypes中的'buildConfigField'在這個特定情況下更有意義) – Dodge 2015-02-24 13:47:05

4

你也可以用你在你的應用程序代碼的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.CHROMECASTBuildConfig.API_URL

對於資源,您可以爲您的調試版本創建特定資源src/debug/res例如,一個特殊的應用程序圖標或覆蓋應用程序名稱

相關問題