Gradle变量定义及使用

·  阅读 639

1. 引言

上面的代码中出现了3种定义并使用变量的方法,分别是def | ${System.env.xxx} | rootProject.ext.xxx

2. def

def 关键字的方式很好理解,defGroovy语言中定义变量的关键字。

Groovy中的变量可以通过两种方式定义 - 使用数据类型的本地语法,或者使用def关键字。 对于变量定义,必须明确提供类型名称或在替换中使用def

3. gradle.properties

${System.env.xx}是指在在根目录下的gradle.properties文件里去添加参数。

在一些项目中会分拆applib模块 , 这时候引用公共配置的时候,一旦更改版本会出现需要同步更改两个地方的问题。这种情况,可以通过配置gradle.properties实现替换。

需要注意的是:gradle.properties定义的属性,在使用时拿到的默认是String类型的,所以有些地方需要自己进行类型转换。

4. ext

根据ext属性的官方文档,ext属性是ExtensionAware类型的一个特殊的属性,本质是一个Map类型的变量。

可以在根目录下的build.gradle中定义ext属性。

buildscript {
    // ...
}

ext {
    gsonVersion = '2.8.7'
}

allprojects {
    // ...
}
复制代码

形如 rootProject.ext.xx 命名的变量,只需要挂载到 ext 下面是可以在gradle文件中通过变量名 xx 直接引用的。每一个模块都可以有自己的 ext 变量,rootProject.ext 强调了引用自根目录。

因此rootProject.ext不是必需的,如果模块配置的gradle文件中没有定义同名变量,那么rootProject.ext则可以省略,即可以直接引用gsonVersion变量。

implementation "com.google.code.gson:gson:$gsonVersion"
复制代码

但是如果模块的配置文件定义了相同的变量,直接引用gsonVersion则会优先使用模块里的变量,这个道理与全局变量、局部变量类似。

5. 注意事项

implementation "com.google.code.gson:gson:$gsonVersion"
复制代码

使用如上方法定义依赖时,需要使用双引号,因为gradle使用的是groovy语言, groovy的字符串有三种使用方式,单引号'',双引号"",三个单引号''',分别表示:只表示字符串;字符串可以通过${}引用其他变量;字符串换行。

分类:
Android
标签:
分类:
Android
标签:
收藏成功!
已添加到「」, 点击更改