【问题标题】:External reference/variable in build.gradle filebuild.gradle 文件中的外部参考/变量
【发布时间】:2018-09-08 17:58:26
【问题描述】:

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

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

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

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

有没有什么方法可以让我不必在每个文件中更改这些值?是否可以使用一些外部引用或变量,这样我就可以在一个地方编辑我的 versionCodeversionName 等?

【问题讨论】:

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


    【解决方案1】:

    在您的项目分级中

    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"
    
            }
    

    【讨论】:

      【解决方案2】:

      转到文件/项目结构/应用程序/风味,然后您可以获得 versionCode、versionName 等,然后根据需要更改它们,它会影响您的所有文件。

      Check this Image

      【讨论】:

      • 这就是我如何理解你的问题。
      【解决方案3】:

      是的。

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

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

      那么您应该能够从您的模块级配置中引用它们:

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

      【讨论】:

      • 我认为 defaultConfig 部分中不应该有等号。
      • @Ωmega 是的,对不起。
      • 我喜欢你如何显示 ext 变量定义,而不像其他答案所建议的那样使用块。不错的替代示例。谢谢!
      【解决方案4】:

      您可以在顶级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

      【讨论】:

      • 很好的说明和例子。谢谢!
      • 死链接,请修复
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-14
      • 1970-01-01
      • 2013-07-09
      • 1970-01-01
      • 1970-01-01
      • 2014-01-09
      相关资源
      最近更新 更多