Неподдерживаемый метод: BaseConfig.getApplicationIdSuffix ()


248

Итак, я читаю Android 6 для программистов: подход, управляемый приложением, и первые два примера приложений. У меня не было проблем с примерами, на этот раз пример FlagQuiz при загрузке в Android Studio 3.0 Canary-3 я получаю эту ошибку, которая не позволяет мне построить проект:

Ошибка: неподдерживаемый метод: BaseConfig.getApplicationIdSuffix (). Версия Gradle, к которой вы подключаетесь, не поддерживает этот метод. Для решения проблемы вы можете изменить / обновить целевую версию Gradle, к которой вы подключаетесь. Кроме того, вы можете игнорировать это исключение и читать другую информацию из модели.

Вы можете скачать исходный код с сайта книги здесь, чтобы протестировать с той же кодовой базой, с которой я тестирую.

Ответы:


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'Click that, так как минимальная версия Gradle3.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.


137
Я действительно не понимаю, почему Google делает вещи сложнее.
ACAkgul

1
@ AhmetCanAkgül Это не так !!
Masquerade0097

1
в моем случае classpath 'com.android.tools.build:gradle:2.3.2' работает.
Prags

Это, конечно, немного хлопотно.
Скотт Фрэли

13
@ACAkgul Да, мы теперь обновляем наши приложения реже, каждый раз, когда мы делаем это, это большая трудоемкость, простое исправление ошибки означает, что мы должны обновить нашу среду и тратить часы (если не дни), чтобы переключиться на новые API и среду. Люди смеются над Microsoft, теперь я думаю, что MS - ангелы!
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

Это сработало для меня. Должен быть помечен как правильный ответ.
Тина Дж

1
@srs, объясни, пожалуйста, почему в зависимостях блокируют версию gradle 3.0.1, а в файле 4.1 - gradle-wrapper? Разве это не должна быть одна и та же версия?
Джонни

1
Интересно, но не смог сделать это в действительно старом проекте. Тогда я просто изменил версию Gradle не на 3.0.1, а на 2.2.1, и это сработало.
Джонни

48

Сначала откройте файл приложения build.gradle модуля приложения .

Проверьте classpath в соответствии с вашей зависимостью проекта. Если нет, измените версию этого classpath.

из:

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

Для того, чтобы:

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

или более поздняя версия, в зависимости от вашего студента андроид студии.

Если проблема не устранена, измените buildToolsVersion :

Из:

buildToolsVersion '21.0.0'

Для того, чтобы:

buildToolsVersion '25.0.0'

затем нажмите «Попробовать еще раз», и Gradle автоматически синхронизируется. Это решит это.


16

В моем случае, Android Studio 3.0.1, я исправил проблему с помощью следующих двух шагов.

Шаг 1: Измените версию плагина Gradle в 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: Изменить версию Gradle

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

11

Я также столкнулся с той же проблемой и получил очень похожее решение:

  1. Изменение пути к классу на путь к классу 'com.android.tools.build:gradle:2.3.2'

    Изображение после добавления пути к классу

  2. Новое сообщение об обновлении версии Build Tool, поэтому просто нажмите на это сообщение для обновления. Обновить


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 Project устарел, и вы обновили Android Studio, то, что я сделал, было просто ЗАКРЫТЬ ПРОЕКТ и снова запустил его. Это решило проблему для меня. Не добавлял никаких зависимостей или чего-либо еще, как описано в других ответах.


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', включает: ['* .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 ()} зависимости {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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.