Android ext和project.ext在gradle中的作用域相同吗?

Android ext和project.ext在gradle中的作用域相同吗?,android,gradle,android-gradle-plugin,Android,Gradle,Android Gradle Plugin,如果我有下面的Android gradle脚本 ext { compileSdkVersion = 25 } android { compileSdkVersion project.compileSdkVersion } ext{…}是否与project.ext{…}具有相同的作用域 下面两个有相同的范围吗 compileSdkVersion项目。compileSdkVersion compileSdkVersion此。compileSdkVersion compileS

如果我有下面的Android gradle脚本

ext {
    compileSdkVersion = 25
}

android {
    compileSdkVersion project.compileSdkVersion 
}
  • ext{…}
    是否与
    project.ext{…}
    具有相同的作用域

  • 下面两个有相同的范围吗

    • compileSdkVersion项目。compileSdkVersion
    • compileSdkVersion此。compileSdkVersion
    • compileSdkVersion compileSdkVersion
      -不。这就产生了错误
  • 你可以

    额外属性
    Gradle的域模型中的所有增强对象都可以保存额外的用户定义属性。这包括但不限于项目、任务和源集。可以通过拥有对象的ext属性添加、读取和设置额外属性。或者,可以使用ext块一次添加多个特性

    在代码中,
    ext
    块向
    项目
    对象添加两个额外的属性

    另外,
    ext
    project.ext
    的缩写。 要读取额外的属性,将省略
    ext
    ,您可以使用以下内容:

    ext {
       compileSdkVersion=26
    }
    
    • project.myExtProp
    • myExtProp
    在您的情况下,您可以使用:

    compileSdkVersion project.compileSdkVersion  
    
    因为额外属性与android属性同名

    这只是最后的考虑。
    在根级别文件中定义如下内容:

    ext {
       compileSdkVersion=26
    }
    
    您正在向
    rootProject
    对象添加额外属性。
    这意味着在module/build.gradle文件中,可以使用
    rootProject.ext
    检索此值:

    android {
        compileSdkVersion rootProject.ext.compileSdkVersion
    }
    

    谢谢那么
    这个.myExtProp
    呢?它是否与脚本文件中的
    project
    scope相同?