不支持的方法:BaseConfig.getApplicationIdSuffix()。

256

我正在阅读《Android 6 for Programmers: An App-Driven Approach》,前两个应用示例没有问题,但是 FlagQuiz 示例在 Android Studio 3.0 Canary-3 中加载时出现了以下错误,导致我无法构建项目:

Error:Unsupported method: BaseConfig.getApplicationIdSuffix()。 您连接的 Gradle 版本不支持该方法。要解决此问题,您可以更改/升级 Gradle 的目标版本。 或者,您可以忽略此异常并从模型中读取其他信息。

您可以从书籍网站这里下载源代码,以测试与我使用的相同代码库。

9个回答

660

好的,我已经找出如何解决这个问题了。

  • 打开 build.gradle 并将 gradle 版本更改为建议使用的版本:
    classpath 'com.android.tools.build:gradle:1.3.0' 改为 classpath 'com.android.tools.build:gradle:2.3.2'
  • 点击 'Try Again'
  • 在消息框中会显示 'Fix Gradle Wrapper and re-import project',单击它,因为最低 gradle 版本是 3.3
  • 一个新的错误弹出并说 The SDK Build Tools revision (23.0.1) is too low for project ':app'. Minimum required is 25.0.0 - 点击 Update Build Tools version and sync project
  • 可能会弹出一个窗口,上面写着 Android Gradle Plugin Update recommended,只需从那里更新即可。

现在该项目应该能够在任何您的 Android 虚拟设备上运行了。


145
我很不明白为什么谷歌让事情变得更难了。 - ACAkgul
1
@AhmetCanAkgül 不是这样的!! - Masquerade
2
在我的情况下,classpath 'com.android.tools.build:gradle:2.3.2' 是有效的。 - Prags
14
是的,我们现在更新应用程序的频率较低,每次更新都是一项巨大的工作,即使只是简单的错误修复也意味着我们必须更新我们的环境并花费数小时(甚至数天)来切换到新的API和环境。人们取笑微软,现在我认为微软是天使! - albattran
我有一个旧项目需要更新,遇到了这个问题。这个解决方案完美地解决了它。 - Wayne Johnson
显示剩余9条评论

91

为了解决 Android Studio 3 中的错误,我需要更新两个文件:

1. app/build.gradle

buildscript {
    repositories {
        jcenter()
        mavenCentral()
        maven {
            url 'https://maven.google.com/'
            name 'Google'
        }
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.1'
    }
}

2. app/gradle/wrapper/gradle-wrapper.properties

distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip

这对我有用。应该标记为正确答案。 - Tina J
1
@srs,请解释一下为什么在依赖块中使用的Gradle版本是3.0.1,而在Gradle包装程序文件中却是4.1?难道它们不应该是同一个版本吗? - Johnny Five
1
有趣的是,在一个非常老的项目中无法完成这项任务。然后我只是将Gradle版本从3.0.1更改为2.2.1,就可以实现了。 - Johnny Five

49

首先打开你的应用程序模块 build.gradle 文件。

检查您项目依赖的classpath。如果不正确,请更改此 classpath 的版本。

classpath 'com.android.tools.build:gradle:1.0.0'

收件人:

classpath 'com.android.tools.build:gradle:2.3.2'

根据您的Android Studio Gradle版本,需要使用4.0或更高版本。

如果仍有问题,请更改buildToolsVersion

从:

buildToolsVersion '21.0.0'

收件人:

buildToolsVersion '25.0.0'

然后点击“重试”,Gradle 将自动同步。 这将解决问题。


16

在我的情况下,Android Studio 3.0.1,我通过以下两个步骤解决了这个问题。

第一步:在项目级别的build.gradle文件中更改Gradle插件版本。

buildscript {
    repositories {
        jcenter()
        mavenCentral()
        maven {
            url 'https://maven.google.com/'
            name 'Google'
        }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.1'
    }
}

步骤2:更改Gradle版本

distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip

11

我也遇到了同样的问题,并找到了一个非常相似的解决方案:

  1. 将classpath更改为classpath 'com.android.tools.build:gradle:2.3.2'

    添加classpath后的图片

  2. 出现新消息提示更新构建工具版本,只需点击该消息即可更新。更新


5
请直接将代码粘贴到回答中,而不是使用图像。 - Tom Aranda

10

更改您的Gradle版本或更新它

dependencies {
    classpath 'com.android.tools.build:gradle:3.0.1'
}

按下alt+enter并选择“用特定版本替换”。


5
你可以通过更改gradle文件来实现这一点。
 build.gradle > change
    dependencies {
    classpath 'com.android.tools.build:gradle:3.0.1'
    }
    gradle-wrapper.properties > update
    distributionUrl=https://services.gradle.org/distributions/gradle-4.6-all.zip

0

如果这个()不支持的方法:BaseConfig.getApplicationIdSuffix Android 项目旧了,而你已经更新了 Android Studio,我所做的只是关闭该项目并再次运行它。 这解决了我的问题。 没有像其他答案描述的添加任何依赖项或其他东西。


-1
我做了以下操作,使其在AS 3.5上运行。
  1. app/build.gradle

    应用插件:'com.android.application'

    android { compileSdkVersion 21 buildToolsVersion "25.0.0"

    defaultConfig {
        applicationId "com.example.android.mobileperf.render"
        minSdkVersion 14
        targetSdkVersion 21
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    

    }

依赖项 { 实现 fileTree(dir: 'libs', include: ['*.jar']) 实现 'com.android.support:appcompat-v7:21.0.0' 实现 'com.squareup.picasso:picasso:2.71828' }

  1. build.gradle

    buildscript { repositories { jcenter() mavenCentral() maven { url 'https://maven.google.com/' name 'Google' } google() } dependencies { classpath 'com.android.tools.build:gradle:3.0.1' } } allprojects { repositories { jcenter() google() } }

  2. gradle-wrapper.properties

    distributionUrl=https://services.gradle.org/distributions/gradle-4.1-all.zip


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接