如果我有以下Android gradle脚本;
Task<IEnumerable<T>>
ext {
compileSdkVersion = 25
}
android {
compileSdkVersion project.compileSdkVersion
}
的范围是否与ext {...}
相同?
下面两个是否有相同的范围?
project.ext {...}
compileSdkVersion project.compileSdkVersion
compileSdkVersion this.compileSdkVersion
- 不。这给出了错误答案 0 :(得分:0)
额外属性
Gradle的域模型中的所有增强对象都可以包含额外的用户定义属性。这包括但不限于项目,任务和源集。可以通过拥有对象的ext属性添加,读取和设置额外属性。或者,可以使用ext块一次添加多个属性。
在您的代码中,ext
块会为project
对象添加两个额外属性。
ext
也是project.ext
的简写。
要读取额外的属性,省略ext
,您可以使用类似的内容:
project.myExtProp
myExtProp
在您的情况下,您可以使用:
compileSdkVersion project.compileSdkVersion
因为额外的属性与android属性的名称相同。
只是最后一个考虑因素 在根级别文件中定义类似于:
ext {
compileSdkVersion=26
}
您要将额外属性添加到rootProject
对象
这意味着在您的module / build.gradle文件中,您可以使用rootProject.ext
:
android {
compileSdkVersion rootProject.ext.compileSdkVersion
}