2016-04-27 74 views
0

我的下一個代碼塊在我的build.gradle:使用buildConfigField中的build.gradle定義在另一個地方的build.gradle

productFlavors { 
     //DIMENSION - APP 
     slid { 
      dimension "app" 
      applicationId "com.slid" 
      versionCode 1 
      versionName "1.0.0" 

      manifestPlaceholders = [one_app_id : "273e0-b8f-4c7f-87-0f4eb68da"] 
     } 
} 

我想要做的就是從manifestPlaceholders我的Java內訪問one_app_id碼。

正如我無法做到這一點(或至少我無法找到一種方法),我想定義一個buildConfigFieldString具有相同值273e0-b8f-4c7f-87-0f4eb68da但我想使它成爲一個參考manifestPlaceholders/one_app_id所以我不要寫兩次ID。

我的問題是: buildConfigField "String", "ONE__ID", '[reference_here]' 我該如何設置而不是[reference_here]

OR

如何可以做我的其他方式,即,具有該ID設置爲buildConfigField,然後設置在manifestPlaceholder 該參考例如manifestPlaceholders = [one_app_id: [?!reference_here?!]]

P.S.不用擔心,基於CommonsWare的建議的ID無效:)

+1

- 'FOO'起作用,如果你在某處定義了'FOO',比如在'gradle.properties'中或者作爲一個簡單的全局變量。 – CommonsWare

+0

是的,我找到了gradle.properties解決方案,但我想ID值出現在build.gradle中,而不是其他地方。我會用口味,當需要新味道時,這個項目需要用新數據輕鬆填寫(第三方會填寫這些值並生成一個新的構建,所以它需要很直接,不幸的是:() – AndreiBogdan

+0

「但我想要ID值出現在build.gradle」 - 然後使用全局常量:http://stackoverflow.com/a/4859715/115145 – CommonsWare

回答

0

我已經成功地做到這一點,像這樣:「我怎麼設置的,而不是[reference_here]」

ext { 
    oneAppId = "" 
} 

android { 

    productFlavors { 
      //DIMENSION - APP 
      slid { 
       dimension "app" 
       applicationId "com.slid" 
       versionCode 1 
       versionName "1.0.0" 

       ext.oneAppId = '"273e0-8567-558da"' 
       manifestPlaceholders = [one_app_id : ext.oneAppId] //Used by the third party library 
       buildConfigField "String", "ONE_APPID", ext.oneAppId //I'll use this in java 
      } 
    } 

} 
相關問題