如果我有下面的 Android gradle 脚本;
ext {
compileSdkVersion = 25
}
android {
compileSdkVersion project.compileSdkVersion
}
ext {...}
是否与project.ext {...}
具有相同的作用域?下面两个有相同的作用域吗?
compileSdkVersion project.compileSdkVersion
compileSdkVersion this.compileSdkVersion
compileSdkVersion compileSdkVersion
- 不。这给出了错误
最佳答案
您可以 check the doc:
Extra properties
All enhanced objects in Gradle’s domain model can hold extra user-defined properties. This includes, but is not limited to, projects, tasks, and source sets. Extra properties can be added, read and set via the owning object’s ext property. Alternatively, an ext block can be used to add multiple properties at once.
在您的代码中,ext
block 向 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
}
关于android - ext 和 project.ext 在 gradle 中有相同的范围吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48781976/