Ich erlebe den berühmten ': app: preDexDebug'-Fehler.
Zunächst einmal: Das Projekt zu bereinigen oder neu zu erstellen funktioniert ohne Fehler. Unter Standardeinstellungen setze ich die Projekt-Bytecode-Version auf 1.7 und unter SDK-Position in der Projektstruktur scheint der JDK-Speicherort ebenfalls korrekt zu sein. Nach einer Weile der Forschung fand ich immer noch keine Lösung für dieses Problem.
Der Fehler tritt auf, wenn ich versuche, das Projekt unter Android Studio auszuführen. Wie bereits erwähnt, funktioniert das Reinigen, Neuaufbau und Synchronisieren mit Gradle einwandfrei (sieht so aus - keine Fehler).
Das zeigt die Konsolenkonsole:
%Vor%Wie Sie unten sehen, habe ich die "compile android. ..." - Zeile in meinem build.gradle entfernt, aber es hat immer noch nicht funktioniert. Also hier ist meine Gradle Build-Datei:
%Vor%Es sieht so aus, als hätte Gradle einige Probleme mit meinem JDK, aber ich weiß nicht, was und wie man sie beheben kann. Ich hoffe, ihr könnt mir helfen.
EDIT: Ich habe herausgefunden, dass version (0034.0000)
bedeutet, dass ich Java 8 verwende. Das Seltsame ist, dass ich definitiv kein Java 8 benutze. In Android Studio habe ich den JDK-Pfad zu "C:\Program Files\Java\jdk1.7.0_67"
definiert. Das ist 64-Bit-Java (Ich benutze Win 7 64-Bit btw.). Außerdem habe ich 32-Bit Java bei "C:\Program Files (x86)\Java\jdk1.7.0_75"
, aber ich zeige nicht auf seinen Standort von Android Studio (ich brauche beide Versionen auf meinem Rechner). Weiß jemand, warum Android Studio denkt, dass ich Java 8 auf meinem Rechner habe? Wie Sie in meiner Datei sehen können, habe ich sourceCompatibility
und targetCompatibility
auf JavaVersion.VERSION_1_7
gesetzt. Gibt es irgendwelche versteckten Einstellungen irgendwo in Android Studio, welche die Einstellung von Java 8 definieren?
Gelöst es.
Was mich verwirrt hat: Die Ausgabe com.android.dx.cf.iface.ParseException: bad class file magic (cafebabe) or version (0034.0000)","position":{},"original":"com.android.dx.cf.iface.ParseException: bad class file magic (cafebabe) or version (0034.0000)"
lässt mich denken, dass der Fehler aus einigen Android-Bibliotheken kommt, weil jede JDK-Einstellung auf 1.7 gesetzt wurde.
Aber ich wusste, dass irgendwo Java 8 benutzt wurde. Es war wirklich seltsam für mich.
Lösung: Obwohl die permament Benachrichtigung über die Verwendung von --stacktrace oder --debug angezeigt wurde, wusste ich nicht, wo ich sie verwenden sollte (es wurde nirgends erklärt). Nach dem Durchsuchen der Einstellungen stolperte ich über das Textfeld für diese Optionen. Also habe ich "--debug" darin geschrieben. Diese Option gab mir Informationen darüber, was den Fehler wirklich verursacht. Dank des Debug-Modus wurde der Titel der Bibliothek vergeben, der den Fehler mit Java 8 verursacht hat. Da Eclipse sich nicht darüber beschwert, hat sich niemand in meiner Firma darum gekümmert. Was ließ mich im Gegenzug darüber nachdenken, dass alles richtig sein musste.
Um es kurz zu machen: Wenn Sie Fehler haben, wie viele andere zuvor, aber ihre Lösungen nicht funktionieren oder Ihr Fall scheint etwas ganz Besonderes zu sein, verwenden Sie einfach "--debug". Die wahren Informationen sind dort versteckt.
Um --debug (oder - stacktrace) hinzuzufügen, gehen Sie zu Datei .. Einstellungen ..Build, Execution, Deploy .. Compiler .. Befehlszeilenargumente
Tags und Links gradle build exception android-studio build.gradle