Ich habe eine App, die ich gegen API Level 21 kompiliere:
und debuggen Sie es dann auf einem realen Gerät mit API-Level 23:
Das Problem ist, wenn ich versuche, die eigenen Klassen des Android-Betriebssystems zu debuggen, wird "Quellcode stimmt nicht mit dem Bytecode überein" angezeigt. Warum passiert das? Das Testgerät, auf dem die App ausgeführt wird, ist API-Level 23, und die zu debuggende Quelldatei ist ebenfalls Level 23.
Ich bin ziemlich verwirrt. Kann jemand erklären, warum ich diese Nachricht sehe und wie ich sie beheben kann?
Antworten:
Hierfür gibt es im IssueTracker von Google ein offenes Problem .
Die möglichen Lösungen in der Ausgabe (zum Datum dieses Beitrags) sind:
quelle
Hier ist meine Lösung:
Wenn Sie mehr als eine Bibliotheksversion haben, kann dies hilfreich sein.
Klicken Sie auf das Pfeilsymbol
du wirst das bekommen
Doppelklicken Sie, um die richtige Bibliothek auszuwählen (normalerweise ist die höchste Version der Bibliothek korrekt).
Ich habe versehentlich auf die Schaltfläche "Deaktivieren" geklickt. Sie können sie in der Debugger-Einstellung aktivieren
Wenn Sie die Tipps in Schritt 3 nicht haben, können Sie möglicherweise überprüfen, ob Sie die Einstellungsoptionen überprüft haben
quelle
Sie sollten einen Android-Emulator mit derselben API-Ebene wie die compileSdkVersion verwenden. In Ihrem Fall sollten Sie den Android-Emulator mit API-Level 21 verwenden.
quelle
Wenn Sie Gradle verwenden, liegt wahrscheinlich ein Problem mit Gradle-Caches vor. ( Referenz ). Ach, auch wenn du rennst
Es werden nicht wirklich alle Abhängigkeiten aktualisiert. Es bleibt etwas Müll übrig. ( Referenz ).
Die sicherste (aber drastischste und langwierigste) Variante besteht also darin, alles aus den [Benutzer] /. Gradle / Caches zu löschen. Oder um Ihr Problemprojekt dort zu finden und nur seine Caches zu löschen.
quelle
Dies sind die Schritte, die bei mir funktioniert haben (sowohl für Mac als auch für Windows):
quelle
Ich habe alle hier angegebenen Lösungen ausprobiert und keine davon hat für mich funktioniert. In Version 2019.1.3 habe ich nur Artefakte bereinigt und neu erstellt und es hat funktioniert. zuerst Sie
Build -> Build Artifacts... -> <select your artifact> -> Clean
klicken dannBuild
oderRebuild
von derselben Stelle.quelle
Gehen Sie zu Projekteinstellungen> Artefakte. Wählen Sie das Artefakt aus, bei dem das Problem auftritt. Es gibt eine Option "In Projekterstellung einbeziehen". Dies muss überprüft (aktiviert) werden. Für ältere Versionen von IntelliJ ist diese Option "Make on Build".
quelle
Wahrscheinlich kann diese Fehlermeldung mehr als eine Ursache haben. Mein Fall war nicht wie der aus dem OP. In meinem Fall lag dies an einer Bibliothek eines Drittanbieters, für die zusätzliche Bibliotheken erforderlich waren.
Beispiel: Sie fügen X.jar manuell zu Ihrer LIB hinzu, aber für diese X.jar muss Z.jar funktionieren.
Ich brauchte einige Zeit, um herauszufinden, dass die Nachricht überhaupt nicht half. Ich musste die App debuggen, bis ich die Absturzklasse erreichte, und in dieser Klasse sicherstellen, dass alle Importe zufrieden waren.
(Particualry: Ich habe MercadoLibre-0.3.4.jar hinzugefügt, für das commons-httpclient.jar erforderlich ist.)
Hoffe das hilft!
quelle
Dies kann auch passieren, wenn Sie ProGuard aktiviert haben. Setzen Sie in buildTypes minifyEnabled false, shrinkResources false und useProguard false
quelle
Ich habe die hier angegebenen Lösungen ausprobiert, als ich an einer Anwendung gearbeitet habe, die Bluetooth Low Energy (BLE) verwendet. Ich habe es versucht,
all dies schlug fehl.
Was ich getan habe, war das Debuggen der Punkte, an denen ich dachte, ich würde die Warnung erhalten. Ich habe immer noch die Warnung erhalten, aber die Anwendung funktionierte einwandfrei. Sie können die Warnung ignorieren.
quelle
Meine App wurde auf API LEVEL 29 kompiliert, aber das Debuggen auf einem realen Gerät auf API LEVEL 28. Ich habe die Warnung
source code does not match the bytecode
in AndroidStudio erhalten. Ich habe Folgendes behoben:Gehen Sie zu Einstellungen> Sofortiger Lauf: Deaktivieren Sie den sofortigen Lauf
Gehen Sie zu Build> Clean Build
Führen Sie die App erneut aus
Jetzt läuft das Debug normal.
quelle
Sie können AVD erstellen, API-Level gleich Ihrem tagetApi und compileApi auswählen, es funktioniert für mich.
quelle
Android Studio verwendet eine Quellversion, die der Zielversion in Ihrer Anwendung entspricht. Die Kompilierung wird mit einer Quellversion durchgeführt, die der oben genannten Kompilierungsversion entspricht. Achten Sie also darauf, dass in Ihrem Projekt Compile Version == Target Version (die build.gradle-Datei des Moduls anpassen).
quelle
Ich hatte das gleiche Problem und fand eine Lösung. Wenn Sie eine rot markierte Linie haben, wird dieser Fehler angezeigt. Wenn Sie jedoch alle Linien deaktivieren, funktioniert dies normal.
Mit markiert meine ich, wenn Sie auf die linke Seite klicken, wo sich die Zeilennummern befinden, und die Linie hervorgehoben wird. Wenn das nicht klar ist, sind hier Bilder.
Gehe von: markierte Linie zu: nicht markierte Linie
quelle