【问题标题】:How to use a variable for android section of build.gradle?如何为 build.gradle 的 android 部分使用变量?
【发布时间】:2018-03-13 16:31:04
【问题描述】:

基于this answer,我意识到我们可以使用Gradle 变量(我当然不熟悉Gradle,所以请原谅我的术语)在许多Android 项目中实现一些一致性。

例如,我想从这里更改android 闭包配置:

android {
    compileSdkVersion 27
    buildToolsVersion '27.0.3'
    defaultConfig {
        minSdkVersion 16
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"
    }
}

到这里:

android {
    compileSdkVersion configurationVariables.sdk
    buildToolsVersion configurationVariables.buildToolsVersion    
  defaultConfig {
        minSdkVersion configurationVariables.minSdk
        targetSdkVersion configurationVariables.targetSdk
        versionCode 1
        versionName "1.0"
    }
}

但是,我收到此错误:

错误:(5, 0) 启动失败:构建文件 'path_to_android\build.gradle': 5: 语句标签不能用于 构建脚本。如果您尝试配置一个名为 'buildToolsVersion',将':'替换为'='或'',否则会 没有达到预期的效果。 @ 第 5 行,第 24 列。 buildToolsVersion:configurationVariables.buildToolsVersion

如何使用变量来集中跨项目和模块的构建配置?

更新:我将configurationVariables 定义如下:

ext {

    configurationVariables = [
            sdk = 27,
            buildToolsVersion = "27.0.3",
            minSdk = 16,
            targetSdk = 27
    ]
}

我将它写在一个config.gradle 文件中,并使用apply from 将它导入到根项目build.gradle 中以将其应用于所有子项目。

【问题讨论】:

  • 你是如何定义configurationVariables的?

标签: android gradle


【解决方案1】:

您的配置文件结构将值存储为变量。通常这个结构是用来存储变量的。你的配置文件应该是这样的

ext {


        sdk = 27
        buildToolsVersion = "27.0.3"
        minSdk = 16
        targetSdk = 27

}

你把这个变量当作

compileSdkVersion sdk buildToolsVersion buildToolsVersion

我没有使用数组来存储此变量,但正如您在另一个答案链接中给出的那样,它们使用冒号(:) 存储数组变量并且您直接存储值。我不确定,但如果您想使用数组,请尝试使用这样的冒号:

ext {
configurationVariables = [
        sdk : 27,
        buildToolsVersion : "27.0.0",
        minSdk : 16,
        targetSdk : 27
]
}

【讨论】:

  • 您的第一个建议根本没有建立,因为末尾的逗号。然而我没有逗号就试过了,但仍然是同样的错误。我用冒号尝试了数组,仍然是同样的错误。
  • 是的,在第一个建议中应该删除逗号。我尝试了第二种数组方法,它对我来说效果很好。也许您的构建文件中还有其他问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-27
  • 2019-11-06
相关资源
最近更新 更多