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


248

因此,我正在阅读面向程序员的Android 6:一种应用程序驱动方法和前两个应用程序示例,这些示例都没有问题,这一次,当我将FlagQuiz示例加载到Android Studio 3.0 Canary-3中时,出现此错误,不让我建立专案:

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

您可以从此处的书本网站下载源代码,以使用与我测试相同的代码库进行测试。

Answers:


643

好吧,我知道了如何解决此问题。

  • 开放的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虚拟设备上运行了。


136
我真的不明白为什么Google会让事情变得更艰难。
ACAkgul

1
@AhmetCanAkgül不是!
Masquerade0097

1
在我的情况下,classpath'com.android.tools.build:gradle:2.3.2'工作。
Prags

这肯定有点琐事。
Scott Fraley

13
@ACAkgul是的,我们现在不经常更新应用程序,每次这样做都是一件繁琐的事情,简单的错误修复意味着我们必须更新环境并花费数小时(如果不是几天的话)来切换到新的API和环境。人们取笑微软,现在我认为微软是天使!
albattran

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

这对我有用。应标记为正确答案。
蒂娜·J

1
@srs,请解释为什么在依存关系中阻止gradle版本3.0.1,而在gradle-wrapper文件4.1中?应该不是同一版本吗?
约翰尼五世

1
有趣,但在真正的旧项目中无法做到。然后我只是将gradle版本不更改为3.0.1,而是更改为2.2.1,它起作用了。
约翰尼五世

48

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

检查类路径根据您的项目依赖项。如果不是,请更改此类路径的版本。

从:

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

至:

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

或更高版本,具体取决于您的Android Studio设置。

如果仍然存在问题,则更改buildToolsVersion

从:

buildToolsVersion '21.0.0'

至:

buildToolsVersion '25.0.0'

然后点击“重试”,gradle将自动同步。这将解决它。


16

对于我的Android Studio 3.0.1,我通过以下两个步骤解决了该问题。

步骤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. 将类路径更改为类路径'com.android.tools.build:gradle:2.3.2'

    添加类路径后的图像

  2. 一条新消息指示要更新构建工具版本,因此只需单击该消息即可进行更新。 更新资料


5
请将您的代码直接粘贴到答案中,而不要使用图片。
汤姆·阿兰达

10

更改或更新gradle版本

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

alt +输入并选择“替换为特定版本”。


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,那么我所做的只是简单的CLOSE PROJECT并再次运行它。它为我解决了这个问题。没有添加任何依赖项或其他答案描述的内容。


0

我做了以下工作以使其在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 {{库jcenter()mavenCentral(){行家URL ' https://maven.google.com/ '名称'谷歌'谷歌}()} {依赖性类路径“com.android.tools.build:gradle:3.0。 1'}} allprojects {储存库{jcenter()google()}}

  2. gradle-wrapper.properties

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.