繁体   English   中英

Build.gradle:对“项目”的访问超出其访问权限

[英]Build.gradle: Access to 'project' exceeds its access rights

常量.gradle

project.ext {
    minSdkVersion = 19
    compileSdkVersion = 28
    targetSdkVersion = 28
    buildToolsVersion = '28.0.3'
    supportLibraryVersion = '28.0.0'
}

应用程序的build.gradle

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

android {

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

    defaultConfig {
    ...

在此处输入图片说明

这里有什么问题?

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

在此处输入图片说明

对于defaultConfig块中的下一行,一切都很好

minSdkVersion project.ext.minSdkVersion
targetSdkVersion project.ext.targetSdkVersion

在此处输入图片说明

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 似乎没有显示此类警告

这只是一个警告,它应该可以工作。

因为当你在android范围内使用project时,Gradle 会尝试找到project的调用位置。

IDE 上报的候选项目列表

您有两个选项可以修复此警告。

android范围之外获取常量。

def compileSdkVersion = project.ext.compileSdkVersion
def buildToolsVersion = project.ext.buildToolsVersion

android {

    compileSdkVersion compileSdkVersion
    buildToolsVersion buildToolsVersion
    ...

或更新您的constants.gradle

ext {
    buildVersions = [
      minSdkVersion : 19,
      compileSdkVersion : 28,
      targetSdkVersion : 28,
      buildToolsVersion : '28.0.3',
      supportLibraryVersion : '28.0.0',
    ]
}

并在您的build.gradle使用它,例如:

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

android {

    compileSdkVersion buildVersions.compileSdkVersion
    buildToolsVersion buildVersions.buildToolsVersion
    ...

在我的情况下,相同的变量命名(compileSdkVersion compileSdkVersion)是不正确的,这是一个工作代码示例:

def compileSdkVer = 30
def buildToolsVer = '29.0.3'

android {
    compileSdkVersion compileSdkVer
    buildToolsVersion buildToolsVer
defaultConfig {
...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM