2016-04-27 84 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 
      } 
    } 

} 
相关问题