Android gradle build:如何设置全局变量

Guy*_*Guy 50 gradle android-gradle-plugin

如何设置可以从build.gradle和tasks访问的全局变量?

Guy*_*Guy 72

设置全局变量

project.ext.set("variableName", value)
Run Code Online (Sandbox Code Playgroud)

要从项目的任何位置访问它:

project.variableName
Run Code Online (Sandbox Code Playgroud)

例如:

project.ext.set("newVersionName", versionString)
Run Code Online (Sandbox Code Playgroud)

然后...

println project.newVersionName
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅:http://www.gradle.org/docs/current/dsl/org.gradle.api.plugins.ExtraPropertiesExtension.html

编辑:由Dmitry评论,在新版本中,您可以使用以下简写:

project.ext.variableName = value
Run Code Online (Sandbox Code Playgroud)

  • 更简单的定义变量的方法是`project.ext.variableName = value`(没有显式调用`project.ext.set`) (10认同)

naf*_*aka 20

Guy的答案非常好.我只是想添加实用的代码.

例:

Project build.gradle中放置这样的东西:

project.ext {
    minSdkVersion = 21
    targetSdkVersion = 23
}
Run Code Online (Sandbox Code Playgroud)

并在Module build.gradle中输入类似的东西来访问它:

    defaultConfig {
        minSdkVersion.apiLevel project.minSdkVersion
        targetSdkVersion.apiLevel project.targetSdkVersion
    }
Run Code Online (Sandbox Code Playgroud)


小智 7

您也可以这样做:假设您要添加版本25.3.1的appcompat,您可以在项目级别构建gradle中添加变量version_name

buildscript{
     ext.version_name = '25.3.1'
}
Run Code Online (Sandbox Code Playgroud)

现在,您可以将其添加到应用程序级别构建gradle并避免任何冲突

compile "com.android.support:appcompat-v7:$version_name" compile "com.android.support:recyclerview-v7:$version_name" compile "com.android.support:design:$version_name"