Bien que tard dans la réponse, c'est difficile pour Google (les guillemets simples) et ce qui se passe n'est pas clair. Je n'ai pas encore la réputation de commenter ou de demander la portée (ou de publier 3 liens), donc cette réponse peut être un peu fastidieuse.
Pour répondre rapidement, vous pouvez avoir plusieurs plugins Gradle dans votre projet.
Synchroniser Gradle Wrapper et Plugins
Mon problème semblait commencer par un fichier IML corrompu. Android Studio (entre la fermeture et la réouverture d'un projet) a commencé à se plaindre d'un IML disparu (ce n'était pas le cas) et un module devrait être supprimé, ce que j'ai refusé. Cela a persisté, j'ai mis à niveau vers AS 0.8.7 (canal canari) et je suis resté bloqué sur le problème OP (tâche '' introuvable dans le projet racine). Cela a complètement bloqué les versions, j'ai donc dû creuser pour Gradle.
Mes étapes de réparation sur OSX (veuillez ajuster pour Windows):
- Mettre à niveau Android Studio vers la version 0.8.7
- Préférences | Mises à jour | Basculez "Beta Channel" sur "Canary Channel", puis effectuez une vérification maintenant.
- Vous pourrez peut-être ignorer cela.
Vérifié le wrapper Gradle (actuellement 1.12.2; n'essayez pas d'utiliser 2.0 pour le moment).
En supposant que vous n'avez pas besoin d'une version particulière, utilisez la dernière distribution prise en charge
$ vi ~/project/gradle-wrapper.properties
...
distributionUrl=http\://services.gradle.org/distributions/gradle-1.12-all.zip
Cela peut être défini dans Android Studio dans Préférences | Gradle (mais la 0.8.7 me donnait des erreurs de «localisation invalide»).
- Le «wrapper» n'est qu'une copie de Gradle pour chaque projet Android Studio. Il vous permet d'avoir Gradle 2 dans votre système d'exploitation et différentes versions dans vos projets. La documentation du développeur Android explique cela ici .
- Ensuite, ajustez vos fichiers build.gradle pour le plugin . La version du plugin Gradle doit être compatible avec la version distribution / wrapper, pour l'ensemble du projet. Comme la documentation des outils (tools.android.com/tech-docs/new-build-system/user-guide#TOC-Requirements) est légèrement obsolète, vous pouvez définir la version du plugin trop faible (comme 0.8.0) et Android Studio générera une erreur avec la plage acceptable pour le wrapper.
Exemple, dans build.gradle, vous avez ce plugin:
dependencies {
classpath "com.android.tools.build:gradle:0.12.+"
}
Vous pouvez essayer de le changer pour la version exacte, comme ceci:
dependencies {
classpath "com.android.tools.build:gradle:0.12.2"
}
et (après avoir enregistré la version à partir de laquelle vous changez dans chaque cas) vérifier que chaque fichier build.gradle de votre projet extrait la même version du plugin. Garder le «+» devrait fonctionner (pour 0.12.0, 0.12.1, 0.12.2, etc.), mais ma compilation a réussi lorsque j'ai mis à jour la bibliothèque Volley de Google (à l'origine gradle: 0.8. +) Et mon projet principal (à l'origine 0.12. +) vers la version fixe: gradle: 0.12.2.
Autres contrôles
Assurez-vous que vous n'avez pas deux modules d'application Android dans le même projet
Cela peut interagir avec la solution finale (différentes versions de Gradle, ci-dessus) et provoquer
UNEXPECTED TOP-LEVEL EXCEPTION: com.android.dex.DexException: Multiple dex files define (various classes)
Pour vérifier, construire | Make Project ne doit pas faire apparaître une fenêtre vous demandant quelle application vous souhaitez créer.
- Invalidez vos caches
- Fichier | Invalidate Caches / Restart (stackoverflow.com/a/19223269/513413)
- Si l'étape 2 ne fonctionne pas, supprimez ~ / .gradle / (www.wuttech.com/index.php/tag/groovy-lang-closure/)
- Quittez Android Studio
- $ rm -rf ~ / .gradle /
- Démarrez Android Studio, puis synchronisez:
- Outils | Android | Synchroniser le projet avec les fichiers Gradle
- Répétez cette séquence entière (quitter ... synchroniser) plusieurs fois avant d'abandonner.
- Nettoyez le projet
- Construire | Projet propre
Si vous voyez ceci ...
Dans mes versions récentes, j'ai continué à voir d'horribles échecs (pages d'exceptions) mais en quelques secondes, les messages disparaissaient, la construction réussissait et l'application déployée. Comme je ne pouvais jamais l'expliquer et que l'application fonctionnait, je n'ai jamais remarqué que j'avais deux plugins Gradle dans mon projet. Je pense donc que les plugins Gradle se sont combattus; l'un s'est écrasé, l'autre a perdu son état et a signalé l'erreur.
Si vous avez le temps, la vidéo d'une heure "A Gentle Introduction to Gradle" (www.youtube.com/watch?v=OFUEb7pLLXw) m'a vraiment aidé à aborder les fichiers de construction Gradle, les tâches, les décisions de construction, etc.
Avertissement
J'apprends toute cette pile, sur un OS étranger, après avoir travaillé une carrière différente ... le tout en même temps et sous pression. Au cours des derniers mois, j'ai touché tous les murs que je pense d'Android; Je suis venu ici assez souvent et c'est mon premier message. Je pensais que c'était une solution difficile, alors je m'excuse sincèrement si la qualité de ma réponse reflète la difficulté que j'ai eue à y arriver.