Das Plugin ist zu alt. Bitte aktualisieren Sie es auf eine neuere Version oder setzen Sie die Umgebungsvariable ANDROID_DAILY_OVERRIDE auf

176

Heute habe ich gerade eine Beispiel-App aus dem Android SDK als Modul in mein Projekt (Analytics) importiert und plötzlich habe ich diesen Gradle-Fehler erhalten, als ich versuche, sie zu synchronisieren: Plugin is too old, please update to a more recent version, or set ANDROID_DAILY_OVERRIDE envrinment variable to...

Dies ist meine App- gradleDatei:

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')
}

Haben Sie eine Vorstellung davon, was die Ursache sein könnte (ich verwende das Plugin Version 1.1.0-rc1 und die gradleVersion 2.2 und Android StudioVersion 1.1.0)?

BEARBEITEN:

Das ist mein 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
quelle
4
Sie benötigen Gradle 2.2.1 für Android Studio 1.1.0. Das Gradle für Android-Plugin 1.1 ist jetzt verfügbar, sodass Sie das nicht mehr benötigen sollten -rc1.
CommonsWare
Zunächst einmal vielen Dank für Ihre sofortige Antwort. Ich werde versuchen, die Einstellungen des Projekts zu ändern, und die Ergebnisse hier veröffentlichen. Danke noch einmal! :-)
Mario Norato
1
Es funktionierte! Ich habe gerade den Teil "-rc1" aus dem Klassenpfad gelöscht. Jetzt wurde es synchronisiert. Danke noch einmal! PS Ich bin nicht sehr gut darin, Stackoverflow zu verwenden. Wie kann ich Ihre Antwort positiv bewerten oder als die richtige markieren?
Mario Norato
1
Die neueste Gradle-Version finden Sie immer hier. developer.android.com/tools/revisions/gradle-plugin.html
Bharatesh
Wie unhöflich für Android Studio. Wenn etwas automatisch aus GUI generiert wird, darf es NIEMALS die Unterstützung des Programmierers benötigen.
Chamäleon

Antworten:

132

Stellen Sie wie von CommonsWare vorgeschlagen sicher, dass Sie Gradle 2.2.1+ haben (das neueste ist 2.3).

Stellen Sie sicher, dass Sie Ihr Android Studio aktualisieren. Hier sind jedoch die "Plugins", die aktualisiert werden müssen:

Oben build.gradle:

Veränderung:

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

Zu:

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

App build.gradle:

Veränderung:

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

Zu:

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

Überprüfen Sie immer den Android SDK Manager auf die neuesten Versionen:

Plugin für Android Build Tools: http://tools.android.com/tech-docs/new-build-system

Android-Unterstützungsbibliotheken: http://developer.android.com/tools/support-library/features.html

Um die neuesten Plugin-Versionen anzuzeigen, rufen Sie die Bintray Jcenter-Seite direkt auf: https://bintray.com/android/android-tools/com.android.tools.build.gradle/view .

Jared Burrows
quelle
Ok, nachdem ich die Commonsware-Antwort gelesen habe, habe ich gerade den -rc1-Teil des Klassenpfads entfernt und nach der Indizierung scheint es nun gut zu funktionieren (autsch, ich habe fast 2 Stunden verloren, um keinen von euch hier im Stapelüberlauf zu stören :-)), jetzt ich Ich werde versuchen, das Plugin wie vorgeschlagen zu aktualisieren. :-) Danke noch einmal.
Mario Norato
1
@MarioNorato Kein Problem, ich werde die Links veröffentlichen, auf denen Sie ständig die neueste Version finden. Außerdem sollte Android Studio Sie vor einer neueren Version warnen, wenn Sie den Android SDK-Manager auf dem neuesten Stand halten.
Jared Burrows
hatte das gleiche Problem. Das Verschieben des Plugins von 1.4. + auf 1.3. + hat den Trick gemacht. Außerdem verwende ich Gradle 2.8 und habe ein Skript, das immer die neueste Version herunterlädt. Anscheinend hat es seinen Preis ...
CodeScriber
18
Ich musste gehen, https://jcenter.bintray.com/com/android/tools/build/gradle/um herauszufinden, was die neueste Version von Gradle war. Das Aktualisieren meiner Top-Gradle-Datei mit der neuesten verfügbaren Version von dieser URL hat das Problem behoben. Ihre Lösung hat mir nicht genügend Informationen gegeben, um dies zu finden!
Exhuma
1
Es lohnt sich, auf diesen Ort zu verlinken (meiner Meinung nach ist er besser als die Gradle-Website) - auf der die neueste Version der Gradle-Version aufgeführt ist: developer.android.com/tools/revisions/gradle-plugin.html
Booger,
46

Lösung (Aktualisiert: 24. Mai 2016): Ändern Sie 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 : Zum Beispiel: 2.1.0

XXX-lastVersionGServices : Zum Beispiel: 3.0.0 (unterstützt Firebase Analytics)

Hinweis: Wenn Sie das Google Services-Plugin verwenden, muss es dieselbe Version haben (falls vorhanden).

Warnung!! -> 2.2.0-alpha löst nicht unterstützte major.minor Version 52.0 aus, wenn Sie Java JDK 8u91 und NetBeans 8.1 nicht verwenden

SergioLucas
quelle
31

Als Randnotiz habe ich den gleichen Fehler in einer völlig unabhängigen Situation erhalten - nachdem meine Einstellung für das Systemuhrjahr geändert wurde (dh 2015 -> 2016); Das Zurücksetzen der Uhr auf die richtige löste das Problem.

Hinweis 1: Ich poste dies hauptsächlich, weil ich genau die gleiche Fehlermeldung hatte, aber die funktionierende Lösung erwies sich als anders als nur das Aktualisieren der Plugin-Version (wie von gepostet Jared Burrows).

Anmerkung 2: Verwenden

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

kann die Plugin-Version auf die neueste Version setzen. Beachten Sie, dass Ihr Build bei API-Änderungen möglicherweise nicht funktioniert (und aus diesem Grund von Android-API-Dokumenten nicht empfohlen wird). Verwenden Sie dies daher nur auf eigenes Risiko, wenn Sie die Version trotzdem ständig aktualisieren.


quelle
4
Das Intellij / Android Studio warnt Sie davor, dies zu tun, da Sie wissen sollten, welche Version Sie verwenden.
Jared Burrows
1
@JaredBurrows Ich weiß, welche Version ich verwende - die neueste. Ich sehe keinen besonderen Grund, sich an eine bestimmte Version zu binden, und die manuelle Aktualisierung der Version bei jeder neuen Version ist kaum sinnvoller als die Verwendung der +Version IMO. Warnungen werden ausgegeben, um die Programmierung zu erleichtern. Wenn sie sich auf harte, nicht biegbare Regeln beziehen, wären sie in erster Linie keine Warnungen, sondern Fehler gewesen. Trotzdem haben Sie einen völlig gültigen Punkt gemacht, ich habe diese Informationen in meinen Beitrag aufgenommen.
1
Die Verwendung des Operators '+' erzeugt unvorhersehbare Builds und sollte immer vermieden werden. Dies ist eine gefährliche Antwort.
Agrosner
@agrosner siehe meinen Kommentar oben für die Begründung. Es sollte zwar in endgültigen Relases und in seriösem Produktionscode vermieden werden, aber es gibt keinen wirklichen Nachteil, es bei der kontinuierlichen Entwicklung kleiner Anwendungen zu verwenden. Umformuliert, um dies deutlicher zu machen. Als Randnotiz wurde diese Information als mögliche Lösung für ein echtes Problem angegeben , nicht als bewährte Methode - und es ist nicht die Antwort hier - die Antwort ist, auf die Uhr zu schauen.
Nun ... ich habe heute dieses Problem und es ist jetzt wirklich 2016 ... Gibt es eine Chance, dass dies damit zusammenhängt? Gibt es auch eine Möglichkeit, dies zu beheben, ohne die Uhr zu ändern? Ich mache gerade meine Füße nass mit Android und der Build-Umgebung. Es ist alles noch neu für mich und ich bin irgendwie mit diesem Fehler verloren :(
exhuma
29

Nur für den Fall, dass jemand damit zu kämpfen hat, verwende ich in meinem Fall Gradle 1.4 Beta 1 und muss es behalten. Damit Android Studio funktioniert, gehen Sie zum Terminal und führen Sie Folgendes aus:

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

Starten Sie Android Studio neu und das Projekt wird erneut erstellt.

Ein großes Lob an UPDATE 2 hier: https://emmanuelbernard.com/blog/2012/05/09/setting-global-variables-intellij/

Felipe Duarte
quelle
9

Ersetzen Sie Ihren Klassenpfad durch etwas mehrdeutiges. Es ist eine Lösung und es funktioniert, aber es ist möglicherweise keine gute Lösung.

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

Der beste Weg ist, das + durch die neueste Version von gradle zu ersetzen

Victor Mwenda
quelle
Nur wenn Sie wirklich auch die Alpha- oder Beta-Versionen verwenden möchten.
JacksOnF1re
Lesen Sie die Warnung hier: developer.android.com/studio/releases/gradle-plugin.html "Achtung: Sie sollten keine dynamischen Abhängigkeiten in Versionsnummern verwenden, z. B. 'com.android.tools.build:gradle:2.+'. Die Verwendung dieser Funktion kann zu unerwarteten Versionsaktualisierungen und Schwierigkeiten beim Beheben von Versionsunterschieden führen. "
Weston
6

Überprüfen Sie die neueste Version des Gradle Plugins hier:

Herunterladen

Sie sollten dies in Abhängigkeit von den App-Einstellungen ändern

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

}

}}

Dinesh Sunny
quelle
2

Dieses Problem tritt aufgrund der Änderungen der Gradle-Version auf. Da Ihre Anwendung die alte Version von Gradle verwendet, müssen Sie auf die neue Version aktualisieren.

Diese Änderungen müssen in der Datei build.gradle vorgenommen werden. Schauen Sie sich diesen Link an: http://www.feelzdroid.com/2015/11/android-plugin-too-old-update-recent-version.html . Um zu wissen, wie der Gradle aktualisiert wird, werden detaillierte Schritte bereitgestellt. Dort.

Dann

Naruto
quelle
1

Ich verwende Android Data Binding und habe heute das gleiche Problem.

Um es zu lösen, ändern Sie:

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

Zu:

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

1.0-rc0 konnte jetzt noch auf jcenter gefunden werden , ich weiß nicht, warum es nicht verwendet werden konnte.

Peter Zhao
quelle
1

Ich habe einen Weg gefunden, der dieses Problem endgültig löst. 1. Überprüfen Sie Ihren Calsspath im oberen build.gradle, z. B. meinen ist der Klassenpfad 'com.android.tools.build:gradle:2.1.0-alpha3' und gehen Sie dann zu https: // jcenter. bintray.com/com/android/tools/build/gradle/ finde eine Version, die neuer als deine ist. Hier wähle ich 2.1.0-beta3, ändere den Klassenpfad nach unten und starte dann den Build. Klassenpfad 'com.android.tools.build:gradle:2.1.0-beta3'

Hugo
quelle
1

Wenn Sie weiterhin die neuesten Entwicklungsversionen verwenden möchten, kann dieses Problem jedes Mal erneut auftreten, wenn Ihre Version weit genug veraltet ist.

Ich habe in meiner Antwort auf diese ähnliche Frage eine aktuelle Liste der aktuellsten Entwicklungsversionen sowie der stabilen Version geführt, damit ich sie jedes Mal beheben kann, wenn ich eine neue Warnung erhalte:

Android Studio 2.0 - Plugin ist zu alt. Bitte aktualisieren Sie auf eine neuere Version oder setzen Sie ANDROID_DAILY_OVERRIDE

Nick Cardoso
quelle
0

Setzen Sie die Umgebungsvariable ANDROID_DAILY_OVERRIDE auf denselben Wert. Beispiel - b9471da4f76e0d1a88d41a072922b1e0c257745c

das funktioniert bei mir.

Virendra
quelle
Und wo befindet sich diese Variable?
MobileEvangelist
Wo muss ich ANDROID_DAILY_OVERRIDE setzen?
MiguelAngel_LV
1
@ MiguelAngel_LV, AndriodNewbie, Google, wie Umgebungsvariablen in Ihrem Betriebssystem exportiert werden. Dies ist eine OS-Funktion
Yaroslav Mytkalyk
0

In den letzten Monaten habe ich eine "Vorschau" -Version von Android Studio verwendet. Ich habe versucht, für die Software-Updates wieder zu den "stabilen" Versionen zu wechseln, aber es hat nicht gereicht, und ich habe diesen berühmten Fehler erhalten, von dem Sie sprechen.

Das Deinstallieren meines Android Studio 2.2.preview und das Installieren des neuesten stabilen Android Studio (2.1) haben es für mich behoben :)

Guillaume Gendre
quelle
0

Wählen Sie in meinem Fall eine stabile Version oder einen Gradle in einer Gradle-Datei auf App-Ebene
Klassenpfad 'com.android.tools.build:gradle:2.2.0-alpha3'.

Ich habe es mit geändert

Klassenpfad 'com.android.tools.build:gradle:2.1.2'

user3326676
quelle
0

Die Ausgabe erfolgt von NonFinalPluginExpiry.java

Beispiel 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

Wenn jemand Plugin verwenden möchte und nicht täglich Google Shi machen möchte.

entweder müssen:

  1. Plugin neu kompilieren
  2. Ersetzen Sie "Plugin-Version" im Manifest
  3. Erstellen Sie ein Automatisierungsskript, um env var zu generieren, und legen Sie es täglich fest

         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);

BEISPIEL APP IN JAVA (Quellen + JAR):

  1. FÜR GENERATE ADO - für ALLE Betriebssysteme MIT JVM
  2. SET ENV für LINUX

https://github.com/c3ph3us/ado

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

Beispiel Bash-Funktion zum Exportieren von env und Starten von Idee / oder Studio:

// eval export & start idea :) 
function sti() {
    export `java -jar AndroidDailyOverride.jar p`
    idea.sh
}
ceph3us
quelle
0

Dies ist die Art und Weise, wie Android Ihnen sagt, dass Sie gradle auf die neueste Version aktualisieren sollen. Sie können zwei Dinge tun:

  1. Upgrade auf die neuere Version von gradle. Nach dem Upgrade können neue Fehler auftreten (z. B. wenn Sie ein Upgrade auf 4.1 durchführen, müssen Sie sich an die neue Syntax anpassen - "Kompilieren" ist nicht mehr gültig, verwenden Sie "Implementierung").
  2. Aktualisieren Sie Ihre Variable ANDROID_DAILY_OVERRIDE auf den angegebenen Wert. Gehen Sie zu Computer -> Eigenschaften -> Erweiterte Systemeinstellungen -> Umgebungsvariablen und erstellen Sie eine neue Variable oder aktualisieren Sie den Wert der vorhandenen ANDROID_DAILY_OVERRIDE. Wie der Name schon sagt, ist dieser Wert nur für einen Tag gültig und am nächsten Tag müssen Sie die Variable erneut überschreiben.
kshubham07
quelle
-1

Sie sollten die Version von gradle aktualisieren. Zum Beispiel: com.android.build.gradle 1.3.0

Dieses Problem tritt auf, wenn die Version des Gradles geändert wird.

Ashish Srivastava
quelle