我试图让第三方库(结构)中定义的变量根据Crashlytics是否启用来执行条件。
ext.enableCrashlytics = true
http://support.crashlytics.com/knowledgebase/articles/202938-gradle 该变量可以在buildTypes或flavor中配置,但我无法在build.gradle的其他位置找到访问它的方法
我试了好几件事没有运气。
allprojects.getProperties().get("enableCrashlytics")
project.enableCrashlytics
project.ext.enableCrashlytics
allProjects.ext.enableCrashlytics
以前有人试过吗?我尝试这样做的上下文是根据是否启用了fabric.properties文件来编写。
android.applicationVariants.all { variant ->
...
//create fabric.properties
...
}
答案 0 :(得分:1)
您可以在顶级build.gradle
中定义属性:
ext {
myproperty = 12
}
或数组:
ext {
myarray = [
name0 : "xx",
name1 : "xx"
]
}
然后在每个模块中你可以使用somenthig,如:
rootProject.ext.myproperty
rootProject.ext.myarray.name0
答案 1 :(得分:1)
我知道这个问题已经过时了,但在尝试做类似的事情时我偶然发现了它。
经过反复试验并阅读构建系统源代码后,我发现了它。
variants.all { variant ->
println("${variant.name.capitalize()}")
println(variant.getBuildType().myFoo)
println("------")
}
通过这种方式,您将能够从不同的变体中读取ExtraPropertiesExtensions。
我的输出:
Debug
true
------
Release
true
------
Something
false
------
以下是我查看过的文件: ApplicationVariantImpl和DefaultBuildType
答案 2 :(得分:0)
project.hasProperty 'propName'
(如果可能的话,可以选择常规,更喜欢' String' over" GString")