Le plug-in est trop ancien, veuillez mettre à jour vers une version plus récente ou définir la variable d'environnement ANDROID_DAILY_OVERRIDE sur

177

aujourd'hui, je viens d'importer un exemple d'application du SDK Android en tant que module dans mon projet (analyse) et j'ai soudainement eu cette erreur de gradle lorsque j'essaye de la synchroniser: Plugin is too old, please update to a more recent version, or set ANDROID_DAILY_OVERRIDE envrinment variable to...

Ceci est mon gradlefichier d' application :

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

Avez-vous une idée de ce qui peut en être la cause (j'utilise le plugin version 1.1.0-rc1 et la gradleversion 2.2 et la Android Studioversion 1.1.0)?

ÉDITER:

C'est mon 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
la source
4
Vous avez besoin de Gradle 2.2.1 pour Android Studio 1.1.0. Le plugin Gradle pour Android 1.1 est maintenant disponible, vous ne devriez donc plus avoir besoin du -rc1.
CommonsWare
Tout d'abord merci pour votre réponse immédiate, je vais essayer de changer les paramètres du projet et je posterai les résultats ici. Merci encore! :-)
Mario Norato
1
Ça a marché! Je viens de supprimer la partie "-rc1" du chemin de classe. Maintenant, il s'est synchronisé. Merci encore! PS Je ne suis pas très doué pour utiliser stackoverflow, comment voter pour votre réponse ou la marquer comme la bonne?
Mario Norato
1
vous pouvez toujours trouver la dernière version de gradle ici developer.android.com/tools/revisions/gradle-plugin.html
Bharatesh
Comment impoli pour Android Studio. Si quelque chose est généré automatiquement à partir de l'interface graphique, il ne doit JAMAIS avoir besoin de l'assistance du programmeur.
Chameleon

Réponses:

132

Tout comme CommonsWare a suggéré, assurez-vous que vous avez Gradle 2.2.1+ (le dernier est 2.3).

Assurez-vous de mettre à jour votre Android Studio, mais voici les "plugins" qui doivent être mis à jour:

Haut build.gradle:

Changement:

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

À:

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

App build.gradle:

Changement:

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

À:

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

Vérifiez toujours le gestionnaire de SDK Android pour les dernières révisions:

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

Bibliothèques de support Android: http://developer.android.com/tools/support-library/features.html

Pour afficher les dernières versions du plug-in, consultez directement la page Bintray Jcenter: https://bintray.com/android/android-tools/com.android.tools.build.gradle/view .

Jared Burrows
la source
Ok, après avoir lu la réponse de Commonsware, je viens de retirer la partie -rc1 du chemin de classe et après l'indexation maintenant, cela semble fonctionner correctement (aïe j'ai perdu presque 2 heures pour ne déranger aucun d'entre vous ici dans le débordement de pile :-)), maintenant je Je vais essayer de mettre à jour le plugin comme vous le suggérez. :-) Merci encore.
Mario Norato
1
@MarioNorato Pas de problème, je posterai les liens vers où vous pouvez trouver la dernière version tout le temps. En outre, le studio Android devrait vous avertir de la nouvelle version si vous maintenez le gestionnaire Android SDK à jour.
Jared Burrows
eu le même problème. déplacer le plugin de 1.4. + à 1.3. + a fait l'affaire. J'utilise aussi gradle 2.8 et j'ai un script qui télécharge toujours la dernière version, apparemment il a son prix ...
codeScriber
18
Je devais aller https://jcenter.bintray.com/com/android/tools/build/gradle/voir quelle était la dernière version de gradle. La mise à jour de mon fichier de premier niveau avec la dernière version disponible à partir de cette URL a résolu le problème. Votre solution ne m'a pas donné suffisamment d'informations pour trouver cela!
exhuma le
1
Il vaudrait la peine de créer un lien vers cet emplacement (à mon humble avis, c'est mieux que le site Web de Gradle) - qui contient la dernière version de Gradle: developer.android.com/tools/revisions/gradle-plugin.html
Booger
46

Solution (mise à jour: 24 mai 2016): Modifier build.gradle (projet)

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 : Par exemple: 2.1.0

XXX-lastVersionGServices : Par exemple: 3.0.0 (prend en charge Firebase Analytics)

Remarque: si vous utilisez le plugin google-services doit être la même version (le cas échéant)

Attention!! -> 2.2.0-alpha jette unsupported major.minor version 52.0 si vous n'utilisez pas java JDK 8u91 et NetBeans 8.1

SergioLucas
la source
31

En passant, j'obtiens la même erreur dans une situation totalement indépendante - après que le réglage de l'année de mon horloge système a été modifié (c'est-à-dire 2015 -> 2016); le changement de l'horloge à la bonne a résolu le problème.

Note 1: Je poste ceci principalement parce que j'avais exactement le même message d'erreur, mais la solution de travail s'est avérée différente de la simple mise à jour de la version du plugin (telle que publiée par Jared Burrows).

Remarque 2: utilisation

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

peut rendre la version du plugin par défaut la plus récente. Gardez à l'esprit que votre build peut être interrompu suite aux modifications de l'API (et est, pour cette raison même, déconseillé par la documentation sur l'API Android), alors utilisez-le à vos risques et périls uniquement si vous mettez à jour constamment la version de toute façon.


la source
4
Intellij / Android Studio vous avertira de ne pas le faire, car vous devez savoir quelle version vous utilisez.
Jared Burrows
1
@JaredBurrows Je sais quelle version j'utilise - la plus récente. Je ne vois aucune raison particulière de vous lier à une version particulière, et la mise à jour manuelle de la version chaque fois qu'une nouvelle version est effectuée n'est guère une option plus judicieuse que d'utiliser la +version IMO. Des avertissements sont émis pour aider à la programmation, s'ils faisaient référence à des règles dures et inflexibles, ils n'auraient pas été des avertissements mais des erreurs en premier lieu. Pourtant, vous avez fait un point tout à fait valable, j'ai inclus cette information dans mon message.
1
l'utilisation de l'opérateur «+» produit des constructions imprévisibles et doit toujours être évitée. C'est une réponse dangereuse.
agrosner
@agrosner voir mon commentaire ci-dessus pour la justification. Certes, cela devrait être évité dans les versions finales et dans le code de production sérieux, mais il n'y a pas de réel inconvénient à l'utiliser dans le développement continu de petites applications. Reformulé pour rendre cela plus apparent. En passant , cette information a été donnée comme une solution possible à un problème réel , et non comme une meilleure pratique - et ce n'est pas la réponse ici - la réponse est de vérifier l'horloge.
Eh bien ... j'ai ce problème aujourd'hui, et c'est vraiment 2016 maintenant ... Y a-t-il une chance que cela soit lié? En outre, existe-t-il un moyen de résoudre ce problème sans changer l'horloge? Je me mouille actuellement les pieds avec Android et l'environnement de construction. C'est encore nouveau pour moi et je suis un peu perdu avec cette erreur :(
exhuma
29

Juste au cas où quelqu'un aurait du mal avec ça, dans mon cas, j'utilise Gradle 1.4 beta 1 et je DOIS le garder. Donc, pour faire fonctionner Android Studio, accédez au terminal et exécutez ceci:

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

Redémarrez Android Studio et le projet se reconstruira.

Félicitations à UPDATE 2 ici: https://emmanuelbernard.com/blog/2012/05/09/setting-global-variables-intellij/

Felipe Duarte
la source
9

Remplacez votre chemin de classe par quelque chose d'ambigu comme celui-ci. C'est une solution et cela fonctionne, mais ce n'est peut-être pas une bonne solution.

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

Le meilleur moyen est de remplacer le + par la dernière version de gradle

Victor Mwenda
la source
Eh bien, seulement si vous voulez vraiment utiliser les versions alpha ou bêta aussi.
JacksOnF1re
Lisez la mise en garde ici: developer.android.com/studio/releases/gradle-plugin.html "Attention: vous ne devez pas utiliser de dépendances dynamiques dans les numéros de version, telles que 'com.android.tools.build:gradle:2.+' . L'utilisation de cette fonctionnalité peut entraîner des mises à jour de version inattendues et des difficultés à résoudre les différences de version. "
weston
6

Vérifiez la dernière version de Gradle Plugin ici:

Télécharger

Vous devez changer cela dans les dépendances des paramètres de l'application

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

}

}

Dinesh Sunny
la source
2

Ce problème se produit en raison des modifications de version de Gradle, puisque votre application utilise l'ancienne version de gradle, vous devez mettre à jour vers la nouvelle version.

Ces modifications doivent être effectuées dans le fichier build.gradle, regardez ce lien http://www.feelzdroid.com/2015/11/android-plugin-too-old-update-recent-version.html . pour savoir comment mettre à jour le gradle et les étapes détaillées sont fournies. Là.

Merci

Naruto
la source
1

J'utilise la liaison de données Android et j'ai le même problème aujourd'hui.

Pour le résoudre, changez:

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

À:

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

1.0-rc0 peut encore être trouvé sur jcenter maintenant, je ne sais pas pourquoi il n'a pas pu être utilisé.

Peter Zhao
la source
1

J'ai trouvé un moyen de résoudre finalement ce problème 1. vérifiez votre calsspath dans le top build.gradle, par exemple le mien est classpath 'com.android.tools.build:gradle:2.1.0-alpha3' puis allez à https: // jcenter. bintray.com/com/android/tools/build/gradle/ trouver une version plus récente que la vôtre, ici je choisis 2.1.0-beta3 change classpath en dessous, puis lance la compilation. classpath 'com.android.tools.build:gradle:2.1.0-beta3'

hugo
la source
1

Si vous souhaitez continuer à utiliser les dernières versions de développement, ce problème peut se reproduire chaque fois que votre version est suffisamment obsolète.

J'ai gardé une liste à jour des versions de développement les plus récentes ainsi que la version stable sur ma réponse à cette question similaire, afin que je puisse y remédier chaque fois que je reçois un nouvel avertissement:

Android Studio 2.0 - Le plug-in est trop ancien, veuillez effectuer une mise à jour vers une version plus récente ou définir ANDROID_DAILY_OVERRIDE

Nick Cardoso
la source
0

définir la variable d'environnement ANDROID_DAILY_OVERRIDE sur la même valeur Exemple - b9471da4f76e0d1a88d41a072922b1e0c257745c

cela fonctionne pour moi.

Virendra
la source
Et où se trouve cette variable ??
MobileEvangelist
Où dois-je définir ANDROID_DAILY_OVERRIDE?
MiguelAngel_LV
1
@MiguelAngel_LV, AndriodNewbie, google comment exporter la variable d'environnement dans votre système d'exploitation. Ceci est une fonctionnalité du système d'exploitation
Yaroslav Mytkalyk
0

Au cours des derniers mois, j'ai utilisé une version "aperçu" d'Android Studio. J'ai essayé de revenir aux versions "stables" pour les mises à jour logicielles mais ce n'était pas suffisant et j'ai eu cette fameuse erreur dont vous parlez.

La désinstallation de mon Android Studio 2.2.preview et l'installation du dernier Android Studio stable (2.1) l'ont corrigé pour moi :)

Guillaume Gendre
la source
0

Optez pour la version stable ou gradle dans le fichier de niveau de l'application dans mon cas, c'était le chemin de classe
'com.android.tools.build:gradle:2.2.0-alpha3'

Je l'ai changé avec

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

user3326676
la source
0

la sortie provient de NonFinalPluginExpiry.java

exemple 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

si quelqu'un veut utiliser le plugin et ne veut pas faire un google shi quotidien ..

soit besoin de:

  1. recompiler le plugin
  2. remplacer "Plugin-Version" dans le manifeste
  3. créer un script d'automatisation pour générer env var et le définir quotidiennement

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

EXEMPLE D'APPLICATION EN JAVA (sources + JAR):

  1. POUR GÉNÉRER ADO - pour TOUS LES OS AVEC JVM
  2. SET ENV pour LINUX

https://github.com/c3ph3us/ado

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

exemple de fonction bash pour exporter env et démarrer une idée / ou un studio:

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

C'est la manière d'Android de vous dire de mettre à niveau gradle vers la version la plus récente. Vous pouvez faire deux choses-

  1. Passez à la nouvelle version de gradle. Vous pouvez rencontrer de nouvelles erreurs après la mise à jour (par exemple, si vous mettez à niveau vers la version 4.1, vous devrez vous adapter à la nouvelle syntaxe - "compiler" n'est plus valide, utilisez "implémentation").
  2. Mettez à jour votre variable ANDROID_DAILY_OVERRIDE avec la valeur donnée. Accédez à Ordinateur -> Propriétés -> Paramètres système avancés -> Variables d'environnement et créez une nouvelle variable ou mettez à jour la valeur de ANDROID_DAILY_OVERRIDE existant. Comme son nom l'indique, cette valeur n'est valable que pour un jour et le lendemain, vous devrez à nouveau remplacer la variable.
kshubham07
la source
-1

Vous devez mettre à jour la version de gradle. par exemple: com.android.build.gradle 1.3.0

ce problème se produit lorsque la version du gradle est modifiée.

Ashish srivastava
la source