我试图获取第三方库(结构)中定义的变量,以根据是否启用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
...
}
您可以在顶级build.gradle
中定义属性:
ext {
myproperty = 12
}
或者一个数组:
ext {
myarray = [
name0 : "xx",
name1 : "xx"
]
}
然后在每个模块中你可以使用somenthig,如:
rootProject.ext.myproperty
rootProject.ext.myarray.name0
我知道这个问题已经过时了,但我在试图做类似的事情时偶然发现了它。
经过反复试验并通过构建系统源读取后,我发现了它。
variants.all { variant ->
println("${variant.name.capitalize()}")
println(variant.getBuildType().myFoo)
println("------")
}
有了这个,您将能够从不同的变体中读取ExtraPropertiesExtensions。
我的输出:
Debug
true
------
Release
true
------
Something
false
------
以下是我查看的文件:ApplicationVariantImpl和DefaultBuildType
project.hasProperty 'propName'
(在groovy中可能的时候是可选的,更喜欢“String”而不是“GString”)