如何在Gradle中访问ext变量

时间:2015-09-17 16:18:25

标签: android gradle build.gradle crashlytics

我试图让第三方库(结构)中定义的变量根据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
  ...
}

3 个答案:

答案 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
------

以下是我查看过的文件: ApplicationVariantImplDefaultBuildType

答案 2 :(得分:0)

project.hasProperty 'propName'
  (如果可能的话,可以选择常规,更喜欢' String' over" GString")