Obwohl es zu spät ist zu antworten, ist dies für Google (die einfachen Anführungszeichen) schwierig und es ist nicht klar, was passiert. Ich habe noch nicht den Ruf, einen Kommentar abzugeben oder nach dem Umfang zu fragen (oder 3 Links zu posten), daher kann diese Antwort etwas langweilig sein.
Um schnell zu antworten, haben Sie möglicherweise mehrere Gradle-Plugins in Ihrem Projekt.
Synchronisieren Sie Gradle Wrapper und Plugins
Mein Problem schien mit einer beschädigten IML-Datei zu beginnen. Android Studio (zwischen dem Schließen und dem erneuten Öffnen eines Projekts) begann sich zu beschweren, dass eine IML weg war (es war nicht so) und ein Modul gelöscht werden sollte, was ich ablehnte. Es blieb bestehen, ich habe ein Upgrade auf AS 0.8.7 (kanarischer Kanal) durchgeführt und bin beim OP-Problem hängen geblieben (Aufgabe '' nicht im Root-Projekt gefunden). Dies hat Builds komplett blockiert, also musste ich mich in Gradle vertiefen.
Meine Reparaturschritte unter OSX (bitte für Windows anpassen):
- Aktualisieren Sie Android Studio auf 0.8.7
- Einstellungen | Updates | Schalten Sie "Beta Channel" auf "Canary Channel" und führen Sie dann einen Check Now durch.
- Möglicherweise können Sie dies überspringen.
Überprüfte den Gradle-Wrapper (derzeit 1.12.2; versuchen Sie derzeit nicht, 2.0 zu verwenden).
Angenommen, Sie benötigen keine bestimmte Version, verwenden Sie die neueste unterstützte Distribution
$ vi ~/project/gradle-wrapper.properties
...
distributionUrl=http\://services.gradle.org/distributions/gradle-1.12-all.zip
Dies kann in Android Studio unter Einstellungen | eingestellt werden Gradle (aber 0.8.7 gab mir 'ungültige Position' Fehler).
- Der 'Wrapper' ist nur eine Kopie von Gradle für jedes Android Studio-Projekt. Sie können Gradle 2 in Ihrem Betriebssystem und verschiedene Versionen in Ihren Projekten verwenden. Die Android Developer-Dokumente erklären dies hier .
- Passen Sie dann Ihre build.gradle-Dateien für das Plugin an . Die Gradle-Plugin-Version muss für das gesamte Projekt mit der Distributions- / Wrapper-Version kompatibel sein. Da die Dokumentation zu Tools (tools.android.com/tech-docs/new-build-system/user-guide#TOC-Requirements) etwas veraltet ist, können Sie die Plugin-Version zu niedrig einstellen (z. B. 0.8.0) und Android Studio gibt einen Fehler mit dem für den Wrapper akzeptablen Bereich aus.
Beispiel: In build.gradle haben Sie dieses Plugin:
dependencies {
classpath "com.android.tools.build:gradle:0.12.+"
}
Sie können versuchen, es auf die genaue Version umzustellen, wie folgt:
dependencies {
classpath "com.android.tools.build:gradle:0.12.2"
}
und (nachdem Sie aufgezeichnet haben, von welcher Version Sie jeweils wechseln) zu überprüfen, ob jede build.gradle-Datei in Ihrem Projekt dieselbe Plugin-Version enthält. Das Beibehalten des "+" sollte funktionieren (für 0.12.0, 0.12.1, 0.12.2 usw.), aber mein Build war erfolgreich, als ich die Volley-Bibliothek von Google (ursprünglich gradle: 0.8. +) Und mein Hauptprojekt (ursprünglich 0.12) aktualisiert habe. +) zur festen Version: gradle: 0.12.2.
Andere Schecks
Stellen Sie sicher, dass sich nicht zwei Android-Anwendungsmodule im selben Projekt befinden
Dies kann mit der endgültigen Lösung (verschiedene Gradle-Versionen oben) interagieren und Ursachen verursachen
UNEXPECTED TOP-LEVEL EXCEPTION: com.android.dex.DexException: Multiple dex files define (various classes)
Um dies zu überprüfen, erstellen Sie | Make Project sollte kein Fenster öffnen, in dem Sie gefragt werden, welche Anwendung Sie erstellen möchten.
- Machen Sie Ihre Caches ungültig
- Datei | Caches / Neustart ungültig machen (stackoverflow.com/a/19223269/513413)
- Wenn Schritt 2 nicht funktioniert, löschen Sie ~ / .gradle / (www.wuttech.com/index.php/tag/groovy-lang-closure/).
- Beenden Sie Android Studio
- $ rm -rf ~ / .gradle /
- Starten Sie Android Studio und synchronisieren Sie:
- Werkzeuge | Android | Projekt mit Gradle-Dateien synchronisieren
- Wiederholen Sie diese gesamte Sequenz (beenden ... synchronisieren) einige Male, bevor Sie aufgeben.
- Reinigen Sie das Projekt
Wenn Sie dies sehen ...
In meinen letzten Builds sah ich immer wieder schreckliche Fehler (Seiten mit Ausnahmen), aber innerhalb von Sekunden wurden die Nachrichten gelöscht, der Build war erfolgreich und die App wurde bereitgestellt. Da ich es nie erklären konnte und die App funktionierte, habe ich nie bemerkt, dass ich zwei Gradle-Plugins in meinem Projekt hatte. Ich denke, die Gradle-Plugins haben sich gegenseitig bekämpft. einer stürzte ab, der andere verlor seinen Zustand und meldete den Fehler.
Wenn Sie Zeit haben, hat mir das einstündige Video "Eine sanfte Einführung in Gradle" (www.youtube.com/watch?v=OFUEb7pLLXw) wirklich geholfen, mich den Gradle-Build-Dateien, Aufgaben, Build-Entscheidungen usw. zu nähern.
Haftungsausschluss
Ich lerne diesen ganzen Stack auf einem fremden Betriebssystem, nachdem ich eine andere Karriere gemacht habe ... alles zur gleichen Zeit und unter Druck. In den letzten Monaten habe ich jede Wand getroffen, von der ich glaube, dass Android sie hat. Ich war schon oft hier und dies ist mein erster Beitrag. Ich dachte, dies sei eine schwierige Lösung, und entschuldige mich aufrichtig, wenn die Qualität meiner Antwort die Schwierigkeit widerspiegelt, die ich hatte, sie zu erreichen.