Nieobsługiwana metoda: BaseConfig.getApplicationIdSuffix ()

248

Czytam więc Androida 6 dla programistów: podejście oparte na aplikacji i dwa pierwsze przykłady aplikacji Nie miałem problemów z przykładami, tym razem przykład FlagQuiz po załadowaniu do Android Studio 3.0 Canary-3 dostaję ten błąd, który nie pozwala mi zbudować projektu:

Błąd: Nieobsługiwana metoda: BaseConfig.getApplicationIdSuffix (). Wersja Gradle, z którą się łączysz, nie obsługuje tej metody. Aby rozwiązać problem, możesz zmienić / zaktualizować docelową wersję Gradle, z którą się łączysz. Alternatywnie możesz zignorować ten wyjątek i odczytać inne informacje z modelu.

Możesz pobrać źródło ze strony książki tutaj, aby przetestować z tą samą bazą kodu, z której testuję.

exts
źródło

Odpowiedzi:

643

Dobra, wymyśliłem, jak rozwiązać ten problem.

  • Otwórz build.gradle i zmień wersję na zalecaną:
    classpath 'com.android.tools.build:gradle:1.3.0'na
    classpath 'com.android.tools.build:gradle:2.3.2'
  • Trafienie 'Try Again'
  • W polu wiadomości pojawi się komunikat 'Fix Gradle Wrapper and re-import project'Kliknij to, ponieważ minimalna wersja to3.3
  • Pojawi się nowy błąd i powie The SDK Build Tools revision (23.0.1) is too low for project ':app'. Minimum required is 25.0.0- HitUpdate Build Tools version and sync project
  • Może pojawić się okno wyskakujące Android Gradle Plugin Update recommended, po prostu aktualizuj stamtąd.

Teraz projekt powinien być teraz możliwy do uruchomienia na dowolnym urządzeniu wirtualnym z systemem Android.

exts
źródło
136
Naprawdę nie rozumiem, dlaczego Google utrudnia.
ACAkgul,
1
@ AhmetCanAkgül It does !!
Masquerade0097
1
w moim przypadku działa ścieżka klasy „com.android.tools.build:gradle:2.3.2”.
Prags
To z pewnością trochę uciążliwe.
Scott Fraley,
13
@ACAkgul Tak, teraz aktualizujemy nasze aplikacje rzadziej, za każdym razem, gdy to robimy, jest to ogromna robota, prosta poprawka błędu oznacza, że ​​musimy zaktualizować nasze środowisko i spędzić godziny (jeśli nie dni) na przejściu na nowe interfejsy API i środowisko. Ludzie wyśmiewają się z Microsoft, teraz myślę, że stwardnienie rozsiane to anioły!
albattran
91

W przypadku Androida Studio 3 muszę zaktualizować dwa pliki, aby naprawić błąd: -

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
srs
źródło
To zadziałało dla mnie. Należy zaznaczyć jako poprawną odpowiedź.
Tina J
1
@srs, proszę wyjaśnij, dlaczego w zależnościach blokuje się wersję 3.0.1, ale w pliku 4.1. Czy nie powinna to być ta sama wersja?
Johnny Five
1
Ciekawe, ale nie mogłem tego zrobić w naprawdę starym projekcie. Potem zmieniłem wersję nie na 3.0.1, ale na 2.2.1 i zadziałało.
Johnny Five
48

Najpierw otwórz plik build.gradle modułu aplikacji .

Sprawdź ścieżkę klasy zgodnie z zależnością projektu. Jeśli nie, zmień wersję tej ścieżki klasy.

z:

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

Do:

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

lub wyższa wersja zgodnie z twoją klasą Android Studio.

Jeśli nadal występuje problem, zmień buildToolsVersion :

Z:

buildToolsVersion '21.0.0'

Do:

buildToolsVersion '25.0.0'

następnie naciśnij „Spróbuj ponownie”, a gradacja automatycznie się zsynchronizuje. To rozwiąże problem.

amit pandya
źródło
16

W moim przypadku Android Studio 3.0.1 rozwiązałem problem, wykonując dwa następujące kroki.

Krok 1: Zmień wersję wtyczki Gradle w build.gradle na poziomie projektu

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

Krok 2: Zmień wersję stopnia

distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip
Harry Zhang
źródło
11

Napotkałem również ten sam problem i otrzymałem rozwiązanie bardzo podobne:

  1. Zmienianie ścieżki klasy na ścieżkę klasy „com.android.tools.build:gradle:2.3.2”

    Obraz po dodaniu ścieżki klasy

  2. Nowa wiadomość wskazująca na aktualizację narzędzia do kompilacji, więc po prostu kliknij tę wiadomość, aby zaktualizować. Aktualizacja

Girish BR
źródło
5
Wklej kod bezpośrednio w odpowiedzi, zamiast używać obrazów.
Tom Aranda,
10

Zmień wersję stopniową lub zaktualizuj ją

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

alt + enter i wybierz „zamień na określoną wersję”.

Exel Staderlin
źródło
5

Możesz to zrobić, zmieniając plik stopni.

 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
Mudassir Khan
źródło
0

Jeśli ta () nieobsługiwana metoda: BaseConfig.getApplicationIdSuffix Android Project jest stara i zaktualizowałeś Android Studio, to po prostu zamknąłem PROJEKT i uruchomiłem go ponownie. Dla mnie to rozwiązało problem. Nie dodano żadnych zależności ani niczego, jak opisano w innych odpowiedziach.

itzo
źródło
0

Zrobiłem następujące, aby uruchomić to na AS 3.5

  1. app / build.gradle

    zastosuj wtyczkę: „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'
        }
    }

    }

zależności {implementacja fileTree (reż: 'libs', obejmują: [[* .jar ']) implementacja' com.android.support:appcompat-v7:21.0.0 'implementacja' 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 '}} wszystkie projekty {repozytoria {jcenter () google ()}}

  2. gradle-wrapper.properties

    DistributionUrl = https: //services.gradle.org/distribution/gradle-4.1-all.zip

Herman
źródło