Wtyczka jest zbyt stara, zaktualizuj do nowszej wersji lub ustaw zmienną środowiskową ANDROID_DAILY_OVERRIDE na

176

dzisiaj właśnie zaimportowałem przykładową aplikację z Android SDK jako moduł w moim projekcie (analityka) i nagle otrzymałem ten błąd gradle, gdy próbuję ją zsynchronizować: Plugin is too old, please update to a more recent version, or set ANDROID_DAILY_OVERRIDE envrinment variable to...

To jest gradleplik mojej aplikacji :

apply plugin: 'com.android.application'

android {
    compileSdkVersion 22
    buildToolsVersion "22.0.0"
    defaultConfig {
        applicationId "xxx.xxxxxx.xxxxx"
        versionCode 1
        versionName '1'
        minSdkVersion 9
        targetSdkVersion 22
        versionCode 1
        versionName '1'
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }


    dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:22.0.0'
    compile 'com.google.android.gms:play-services:6.5.87'
    compile 'com.android.support:recyclerview-v7:21.0.0'
    compile 'com.android.support:cardview-v7:21.0.0'
    compile 'com.facebook.android:facebook-android-sdk:3.21.1'
    testCompile 'junit:junit:4.12'
    compile project(':volley')
}

Czy masz pojęcie, co może być przyczyną (używam wersji wtyczki 1.1.0-rc1 oraz gradlewersji 2.2 i Android Studiowersji 1.1.0)?

EDYTOWAĆ:

To jest mój top build.gradle:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.1.0-rc1'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        jcenter()
    }
}
Mario Norato
źródło
4
Potrzebujesz Gradle 2.2.1 dla Android Studio 1.1.0. Wtyczka Gradle dla Androida 1.1 jest już dostępna, więc nie powinieneś już potrzebować rozszerzenia -rc1.
CommonsWare
Przede wszystkim dziękuję za szybką odpowiedź, spróbuję zmienić ustawienia projektu, a wyniki zamieścę tutaj. Dzięki jeszcze raz! :-)
Mario Norato
1
Zadziałało! Właśnie usunąłem część „-rc1” ze ścieżki klas. Teraz zsynchronizowano. Dzięki jeszcze raz! PS Nie jestem zbyt dobry w używaniu stackoverflow, jak mogę zagłosować za twoją odpowiedź lub oznaczyć ją jako właściwą?
Mario Norato
1
zawsze możesz znaleźć najnowszą wersję Gradle tutaj developer.android.com/tools/revisions/gradle-plugin.html
Bharatesh
Jak niegrzecznie dla Android Studio. Jeśli coś jest generowane automatycznie z gui, NIGDY nie może potrzebować pomocy programisty.
Chameleon

Odpowiedzi:

132

Tak jak sugerował CommonsWare, upewnij się, że masz Gradle 2.2.1+ (najnowszy to 2.3).

Upewnij się, że uaktualniasz swoje Android Studio, ale oto „wtyczki”, które należy zaktualizować:

Góra build.gradle:

Zmiana:

classpath 'com.android.tools.build:gradle:1.1.0-rc1'

Do:

classpath 'com.android.tools.build:gradle:1.1.3' // latest 1.5.0

Aplikacja build.gradle:

Zmiana:

compile 'com.android.support:recyclerview-v7:21.0.0'
compile 'com.android.support:cardview-v7:21.0.0'

Do:

compile 'com.android.support:recyclerview-v7:22.0.0' // latest 23.1.1
compile 'com.android.support:cardview-v7:22.0.0' // latest 23.1.1

Gradle: https://gradle.org/downloads

Zawsze sprawdzaj Menedżera Android SDK pod kątem najnowszych wersji:

Wtyczka Android Build Tools: http://tools.android.com/tech-docs/new-build-system

Biblioteki pomocy Androida: http://developer.android.com/tools/support-library/features.html

Aby wyświetlić najnowsze wersje wtyczek, przejdź bezpośrednio na stronę Bintray Jcenter: https://bintray.com/android/android-tools/com.android.tools.build.gradle/view .

Jared Burrows
źródło
Ok, po przeczytaniu odpowiedzi Commonsware właśnie usunąłem część -rc1 ścieżki klas i po zindeksowaniu wydaje się, że działa dobrze (ouch straciłem prawie 2 godziny, aby nikomu nie przeszkadzać tutaj w przepełnieniu stosu :-)), teraz ja Spróbuję zaktualizować wtyczkę zgodnie z sugestią. :-) Dzięki jeszcze raz.
Mario Norato
1
@MarioNorato Nie ma problemu, przez cały czas będę umieszczać linki, pod którymi można znaleźć najnowszą wersję. Ponadto Android Studio powinno ostrzec Cię o nowszej wersji, jeśli będziesz aktualizować menedżera Android SDK.
Jared Burrows
miał ten sam problem. przeniesienie wtyczki z 1.4. + do 1.3. + załatwiło sprawę. również używam gradle 2.8 i mam skrypt, który zawsze pobiera najnowszą wersję, podobno ma swoją cenę ...
codeScriber
18
Musiałem się udać, aby https://jcenter.bintray.com/com/android/tools/build/gradle/dowiedzieć się, jaka jest najnowsza wersja gradle. Zaktualizowanie mojego najwyższego pliku gradle do najnowszej dostępnej wersji z tego adresu URL rozwiązało problem. Twoje rozwiązanie nie dało mi wystarczających informacji, aby to znaleźć!
exhuma
1
Warto połączyć się z tą lokalizacją (IMHO, lepiej niż witryna Gradle) - w której znajduje się najnowsza wersja Gradle: developer.android.com/tools/revisions/gradle-plugin.html
Booger
46

Rozwiązanie (zaktualizowane: 24 maja 2016 r.): Zmień build.gradle (projekt)

buildscript {
repositories {
    jcenter()
}
dependencies {
    classpath 'com.android.tools.build:gradle:X.X.X-lastVersionGradle'
    classpath 'com.google.gms:google-services:X.X.X-lastVersionGServices' // If use google-services

    // NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files
}

XXX-lastVersionGradle : Na przykład: 2.1.0

XXX-lastVersionGServices : Na przykład: 3.0.0 (obsługa Firebase Analytics)

Uwaga: jeśli używasz wtyczki Google-services, musi być w tej samej wersji (jeśli istnieje)

Ostrzeżenie!! -> 2.2.0-alpha wyrzuca nieobsługiwaną wersję major.minor 52.0, jeśli nie używasz java JDK 8u91 i NetBeans 8.1

SergioLucas
źródło
31

Na marginesie, otrzymuję ten sam błąd w zupełnie niezwiązanej sytuacji - po zmianie ustawienia roku zegara systemowego (tj. 2015 -> 2016); zmiana zegara z powrotem na prawidłową rozwiązała problem.

Uwaga 1: Piszę to głównie dlatego, że miałem dokładnie ten sam komunikat o błędzie, ale działające rozwiązanie okazało się inne niż tylko aktualizacja wersji wtyczki (jak opublikował Jared Burrows).

Uwaga 2: używanie

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

może ustawić najnowszą wersję wtyczki jako domyślną. Pamiętaj, że Twoja kompilacja może się zepsuć po zmianach API (i z tego właśnie powodu jest odradzana przez dokumenty API Androida), więc używaj tego na własne ryzyko tylko wtedy, gdy i tak stale aktualizujesz wersję.


źródło
4
Intellij / Android Studio ostrzeże Cię, abyś tego nie robił, ponieważ powinieneś wiedzieć, jakiej wersji używasz.
Jared Burrows
1
@JaredBurrows Wiem, jakiej wersji używam - najnowszej. Nie widzę żadnego szczególnego powodu, aby wiązać się z konkretnym wydaniem, a ręczne aktualizowanie wersji za każdym razem, gdy jest tworzone nowe wydanie, nie jest bardziej rozsądną opcją niż użycie +wersji IMO. Ostrzeżenia są emitowane, aby pomóc w programowaniu, gdyby odnosiły się do twardych, nieugiętych reguł, nie byłyby ostrzeżeniami, ale przede wszystkim błędami. Mimo to wskazałeś całkowicie słuszny punkt, zawarłem te informacje w moim poście.
1
użycie operatora „+” tworzy nieprzewidywalne kompilacje i zawsze należy go unikać. To niebezpieczna odpowiedź.
agrosner
@agrosner, zobacz mój komentarz powyżej dla uzasadnienia. To prawda, należy tego unikać w końcowych wydaniach i poważnym kodzie produkcyjnym, ale nie ma żadnych wad w używaniu go w ciągłym rozwoju małych aplikacji. Przeformułowano, aby było to bardziej widoczne. Na marginesie, ta informacja została podana jako możliwe rozwiązanie prawdziwego problemu , a nie jako najlepsza praktyka - i nie ma tutaj odpowiedzi - odpowiedzią jest sprawdzenie zegara.
Cóż ... Mam dziś ten problem, a teraz naprawdę jest rok 2016 ... Czy jest jakaś szansa, że ​​to ma związek? Czy istnieje sposób, aby to naprawić bez zmiany zegara? Obecnie mam mokre stopy w Androidzie i środowisku kompilacji. To wciąż dla mnie nowość i trochę się pogubiłem z powodu tego błędu :(
exhuma
29

Na wypadek, gdyby ktoś się z tym borykał, w moim przypadku używam Gradle 1.4 beta 1 i MUSZĘ go zachować. Aby więc Android Studio działało, przejdź do terminala i uruchom to:

launchctl setenv ANDROID_DAILY_OVERRIDE <your-value-on-error-message>

Uruchom ponownie Android Studio, a projekt zostanie ponownie zbudowany.

Kudos do UPDATE 2 tutaj: https://emmanuelbernard.com/blog/2012/05/09/setting-global-variables-intellij/

Felipe Duarte
źródło
9

Zastąp ścieżkę klasy czymś niejednoznacznym, takim jak ten. To rozwiązanie i działa, ale może nie być dobrym rozwiązaniem.

classpath „com.android.tools.build:gradle:+”

Najlepszym sposobem jest zastąpienie + najnowszą wersją gradle

Victor Mwenda
źródło
Cóż, tylko jeśli naprawdę chcesz używać wersji alfa lub beta.
JacksOnF1re
Przeczytaj ostrzeżenie tutaj: developer.android.com/studio/releases/gradle-plugin.html „Uwaga: nie należy używać dynamicznych zależności w numerach wersji, takich jak„ com.android.tools.build:gradle:2.+ ” . Korzystanie z tej funkcji może powodować nieoczekiwane aktualizacje wersji i trudności z rozwiązywaniem różnic między wersjami. ”
weston
6

Sprawdź najnowszą wersję wtyczki Gradle tutaj:

Pobieranie

Należy to zmienić w zależnościach ustawień aplikacji

buildscript {
repositories {
    jcenter()
}
dependencies {
    classpath 'com.android.tools.build:gradle:[PLACE VERSION CODE HERE]'

}

}

Dinesh Sunny
źródło
1

Używam Android Data Binding i mam dziś ten sam problem.

Aby go rozwiązać, zmień:

classpath "com.android.databinding:dataBinder:1.0-rc0"

Do:

classpath "com.android.databinding:dataBinder:1.0-rc1"

1.0-rc0 nadal można było znaleźć w jcenter , nie wiem, dlaczego nie można go było użyć.

Peter Zhao
źródło
1

Mam sposób, który ostatecznie rozwiązuje ten problem: 1. sprawdź swoją ścieżkę calsspath w górnym build.gradle, np. Moja to classpath „com.android.tools.build:gradle:2.1.0-alpha3”, a następnie przejdź do https: // jcenter. bintray.com/com/android/tools/build/gradle/ znajdź wersję, która jest nowsza niż twoja, tutaj wybieram 2.1.0-beta3 zmień ścieżkę klasy na niższą, a następnie uruchom kompilację. classpath „com.android.tools.build:gradle:2.1.0-beta3”

hugo
źródło
1

Jeśli chcesz nadal korzystać z najnowszych wersji programistycznych, ten problem może się powtarzać za każdym razem, gdy Twoja wersja jest wystarczająco nieaktualna.

Utrzymuję aktualną listę najbardziej aktualnych wersji rozwojowych, a także stabilną wersję mojej odpowiedzi na to podobne pytanie, aby móc to naprawić za każdym razem, gdy otrzymuję nowe ostrzeżenie:

Android Studio 2.0 - wtyczka jest zbyt stara, zaktualizuj do nowszej wersji lub ustaw ANDROID_DAILY_OVERRIDE

Nick Cardoso
źródło
0

ustaw zmienną środowiskową ANDROID_DAILY_OVERRIDE na tę samą wartość Przykład - b9471da4f76e0d1a88d41a072922b1e0c257745c

to działa dla mnie.

Virendra
źródło
A gdzie ta zmienna się znajduje ??
MobileEvangelist
Gdzie muszę ustawić ANDROID_DAILY_OVERRIDE?
MiguelAngel_LV
1
@MiguelAngel_LV, AndriodNewbie, google jak wyeksportować zmienną środowiskową w systemie operacyjnym. To jest funkcja systemu operacyjnego
Yaroslav Mytkalyk
0

W ostatnich miesiącach korzystałem z „podglądowej” wersji Android Studio. Próbowałem wrócić do „stabilnych” wydań aktualizacji oprogramowania, ale to nie wystarczyło i pojawił się ten słynny błąd, o którym mówisz.

Odinstalowanie mojego podglądu Android Studio 2.2. I zainstalowanie najnowszego stabilnego Android Studio (2.1) naprawiło to dla mnie :)

Guillaume Gendre
źródło
0

Idź do wersji stabilnej lub gradle w pliku gradle na poziomie aplikacji w moim przypadku była to ścieżka
klasy „com.android.tools.build:gradle:2.2.0-alpha3”

Zmieniłem to za pomocą

classpath „com.android.tools.build:gradle:2.1.2”

user3326676
źródło
0

dane wyjściowe pochodzą z NonFinalPluginExpiry.java

przykład 2.4.0-alpha7

https://github.com/c3ph3us/android-gradle-plugin-source-codes/blob/master/gradle-2.4.0-alpha7-sources/com/android/build/gradle/internal/NonFinalPluginExpiry.java

jeśli ktoś chce korzystać z wtyczki i nie chce codziennie robić google shi ..

albo trzeba:

  1. rekompiluj wtyczkę
  2. zamień „Plugin-Version” w manifeście
  3. utwórz skrypt automatyzacji, aby wygenerować zmienną env i ustaw go codziennie

         MessageDigest crypt = MessageDigest.getInstance("SHA-1");
         crypt.reset();
         crypt.update(String.format(
                         "%1$s:%2$s:%3$s",
                            now.getYear(),
                            now.getMonthValue() -1,
                            now.getDayOfMonth())
                            .getBytes("utf8"));
        String overrideValue = new BigInteger(1, crypt.digest()).toString(16);

PRZYKŁADOWA APLIKACJA W JAVA (źródła + JAR):

  1. FOR GENERATE ADO - DLA WSZYSTKICH OSÓW Z JVM
  2. USTAW ENV dla LINUX

https://github.com/c3ph3us/ado

https://github.com/c3ph3us/ado/releases

przykładowa funkcja bash do eksportu env i rozpoczęcia pomysłu / lub studia:

// eval export & start idea :) 
function sti() {
    export `java -jar AndroidDailyOverride.jar p`
    idea.sh
}
ceph3us
źródło
0

To jest sposób, w jaki Android powie Ci, aby zaktualizować gradle do najnowszej wersji. Możesz zrobić dwie rzeczy-

  1. Uaktualnij do nowszej wersji gradle. Po aktualizacji możesz napotkać nowe błędy (np. Jeśli aktualizujesz do 4.1, będziesz musiał dostosować się do nowej składni - "kompilacja" nie jest już poprawna, użyj "implementacja").
  2. Zaktualizuj zmienną ANDROID_DAILY_OVERRIDE do podanej wartości. Przejdź do Komputer -> Właściwości -> Zaawansowane ustawienia systemu -> Zmienne środowiskowe i utwórz nową zmienną lub zaktualizuj wartość istniejącej ANDROID_DAILY_OVERRIDE. Jak sama nazwa wskazuje, ta wartość jest ważna tylko przez jeden dzień, a następnego dnia ponownie będziesz musiał nadpisać zmienną.
kshubham07
źródło
-1

Powinieneś zaktualizować wersję gradle. na przykład: com.android.build.gradle 1.3.0

ten problem występuje po zmianie wersji gradle.

Ashish srivastava
źródło