Build.gradle:对"项目"的访问超出了其访问权限

use*_*924 11 android gradle android-studio build.gradle android-gradle-plugin

constants.gradle

project.ext {
    minSdkVersion = 19
    compileSdkVersion = 28
    targetSdkVersion = 28
    buildToolsVersion = '28.0.3'
    supportLibraryVersion = '28.0.0'
}
Run Code Online (Sandbox Code Playgroud)

的build.gradle应用的

apply plugin: 'com.android.application'
apply from: '../constants.gradle'

android {

    compileSdkVersion project.ext.compileSdkVersion
    buildToolsVersion project.ext.buildToolsVersion

    defaultConfig {
    ...
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

这有什么不对?

虽然它适用于同一项目中的库:

在此输入图像描述

defaultConfig块中的下一行也一切都很好

minSdkVersion project.ext.minSdkVersion
targetSdkVersion project.ext.targetSdkVersion
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

Android Studio 3.2 classpath 'com.android.tools.build:gradle:3.2.0',,distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip

似乎它没有在之前的Gradle或Studio中显示此类警告

Sae*_*umi 13

这只是一个警告,它应该工作.

因为当您使用project内部android范围时,Gradle会尝试查找其中的调用位置project.

在此输入图像描述

您有两种方法可以修复此警告.

让你的常量超出android范围.

def compileSdkVersion =  project.ext.compileSdkVersion
android {
compileSdkVersion compileSdkVersion
...
Run Code Online (Sandbox Code Playgroud)

或者更新你的constants.gradle:

ext {
    buildVersions = [
      minSdkVersion : 19
      compileSdkVersion : 28
      targetSdkVersion : 28
      buildToolsVersion : '28.0.3'
      supportLibraryVersion : '28.0.0'
    ]
}
Run Code Online (Sandbox Code Playgroud)

并在你的build.gradle喜欢中使用它:

apply plugin: 'com.android.application'
apply from: '../constants.gradle'

android {

    compileSdkVersion buildVersions.compileSdkVersion
    buildToolsVersion buildVersions.buildToolsVersion
Run Code Online (Sandbox Code Playgroud)