如何在Gradle中访问ext变量

问题描述 投票:4回答:3

我试图获取第三方库(结构)中定义的变量,以根据是否启用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
  ...
}
android gradle build.gradle crashlytics
3个回答
1
投票

您可以在顶级build.gradle中定义属性:

ext {
  myproperty = 12
}

或者一个数组:

ext {

    myarray = [
            name0     : "xx",
            name1     : "xx"
   ]
}

然后在每个模块中你可以使用somenthig,如:

rootProject.ext.myproperty
rootProject.ext.myarray.name0

1
投票

我知道这个问题已经过时了,但我在试图做类似的事情时偶然发现了它。

经过反复试验并通过构建系统源读取后,我发现了它。

variants.all { variant ->
     println("${variant.name.capitalize()}")
     println(variant.getBuildType().myFoo)
     println("------")
}

有了这个,您将能够从不同的变体中读取ExtraPropertiesExtensions。

我的输出:

Debug
true
------
Release
true
------
Something
false
------

以下是我查看的文件:ApplicationVariantImplDefaultBuildType


0
投票

project.hasProperty 'propName' (在groovy中可能的时候是可选的,更喜欢“String”而不是“GString”)

© www.soinside.com 2019 - 2024. All rights reserved.