使用buildConfigField中的build.gradle定义在另一个地方的build.gradle
问题描述:
我的下一个代码块在我的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
码。
正如我无法做到这一点(或至少我无法找到一种方法),我想定义一个buildConfigField
String
具有相同值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无效:)
答
我已经成功地做到这一点,像这样:“我怎么设置的,而不是[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
}
}
}
- 'FOO'起作用,如果你在某处定义了'FOO',比如在'gradle.properties'中或者作为一个简单的全局变量。 – CommonsWare
是的,我找到了gradle.properties解决方案,但我想ID值出现在build.gradle中,而不是其他地方。我会用口味,当需要新味道时,这个项目需要用新数据轻松填写(第三方会填写这些值并生成一个新的构建,所以它需要很直接,不幸的是:() – AndreiBogdan
“但我想要ID值出现在build.gradle” - 然后使用全局常量:http://stackoverflow.com/a/4859715/115145 – CommonsWare