build.gradle文件中的外部参考/变量

时间:2018-09-08 17:58:27

标签: android android-studio gradle android-gradle build.gradle

是否可以在 build.gradle 文件中使用某些外部引用或变量?

我的应用程序源文件中有几个 build.gradle 文件,包括用于 module app module base 的文件。模块播放器等(取决于代码的结构和包的名称)。

每个文件的内部都有以下或类似的结构:

defaultConfig {
    minSdkVersion 23
    targetSdkVersion 28
    versionCode 1
    versionName "1.0.001"
}

有什么方法可以不必在每个文件中更改这些值的方式进行编码吗?是否可以使用一些外部引用或变量,这样我就可以在一个地方编辑 versionCode versionName 等了。

4 个答案:

答案 0 :(得分:3)

在您的项目gradle

ext {

    minSdkVersion = 14
    targetSdkVersion = 26
    compileSdkVersion = 26
    buildToolsVersion = '26.0.2'

    // App dependencies
    supportLibraryVersion = '26.1.0'
    mockitoVersion = '1.10.19'
    roomVersion = "1.0.0"
}

在您的 App gradle

    android {        
            compileSdkVersion rootProject.ext.compileSdkVersion
            buildToolsVersion rootProject.ext.buildToolsVersion

        defaultConfig {

        minSdkVersion rootProject.ext.minSdkVersion
        targetSdkVersion rootProject.ext.targetSdkVersion
       .
       .

    }

        }

        dependencies {
            // App's dependencies, including test
            compile "com.android.support:appcompat-v7:$rootProject.supportLibraryVersion"

        }

答案 1 :(得分:1)

您可以在顶级build.gradle文件中定义变量,然后在每个模块的build.gradle中引用这些变量-这样,您将只在一个文件中更改一次。

举一个例子,这是顶级文件https://github.com/Ejstn/android-starter/blob/master/build.gradle 这是模块级文件:https://github.com/Ejstn/android-starter/blob/master/app/build.gradle

您还可以将整个依赖项声明为变量,例如在此Google应用程序中:https://github.com/google/santa-tracker-android/blob/master/build.gradle

答案 2 :(得分:1)

转到File / Project结构/ app / flavors,然后可以获取versionCode,versionName等,然后更改所需的内容并影响所有文件。

Check this Image

答案 3 :(得分:1)

是的。

在项目级别的Gradle配置中(项目根目录中的一个,位于任何模块文件夹之外),您可以在buildscript块下定义变量:

ext.thisVersionCode = 1
ext.thisVersionName = "1.0.001"

然后,您应该能够从模块级配置中引用它们:

defaultConfig {
    versionCode = rootProject.ext.thisVersionCode
    versionName = rootProject.ext.thisVersionName
}