Was passiert, wenn Sie versuchen, in der Quelle auf einem Emulator zu debuggen, der ein android 5.0.x Lollipop-Image ausführt? Markiert es die richtige Quelle? Ich habe auch damit zu kämpfen, und ich kam zu dem Schluss, dass das Problem auf Anpassungen an die Android-Quelle durch den Hardware-Anbieter zurückzuführen ist.
Ich habe versucht, durch den Android-Quellcode auf einem Samsung-Gerät mit 4.4.2 KitKat Schritt zu gehen. Einige Dateien reihen sich gut aneinander, einige sind um ein paar Zeilen entfernt, und der Rest ist weit außer Kontrolle geraten. Instrumentation.java ist eine, in der ich mich routinemäßig befinde. Sie ist um 5 Zeilen oder so verschoben.
Also warum denke ich, dass der Anbieter die Android-Quelle angepasst hat? Ich ging durch den Start der Anwendung in ActivityThread.java und Instrumentation.java. Der Debugger wird weiterhin korrekt ausgeführt, obwohl die Quelle nicht ausgerichtet ist. Ich referenzierte die Routine, in der ich mit Android-Quellcode auf grepcode.com war. Schließlich sehe ich den Debugger in einen Funktionsaufruf treten, der in keiner Version der Java-Datei vorhanden ist, die auf grepcode gepostet wird.
Hier ist ein spezifisches Beispiel: ActivityThread.HandleLaunchActivity. Ich war Zeuge der Debugger diese Anrufe
unscheduleGcIdler : present in android source
intent.getWindowStyle : not present. Samsung customization?
handleConfigurationChanged : present
machen Wenn ich Recht habe, dann ist der Debugger korrekt durch einen emulierten Bild Schritt sollte, da es nicht Anbieter angepassten Code enthalten.
Bitte überprüfen Sie Ihre AndroidManifest.xml Datei und stellen Sie sicher, dass diese Werte nicht auch definiert. Manchmal sind SDK-Versions- und Build-Tools auch im Manifest definiert. –
Ich würde nicht davon ausgehen, dass dies unbedingt unterstützt wird. Wenn Sie auf API 19 debuggen möchten, ist es vielleicht am einfachsten, (vorübergehend) dagegen zu bauen. Oder Sie könnten versuchen, es mit Symlinks in den Quellverzeichnissen zu fälschen (dh, geben Sie api 21 an, damit das Build-Jar stimmt, aber symlink es ist das Quelljar mit dem api 19) oder eine obskure IDE-Einstellung. ** Warum müssen Sie die Quelle von Android selbst verfolgen? ** Das sollte selten benötigt werden, und bedenken Sie, dass ein großer Teil der Funktionalität auf der anderen Seite eines IPC liegt, den Sie sowieso nicht verfolgen können. –
@ChrisStratton: Wenn Sie in die android.jar (19) einsteigen, die sich auf einem Gerät befindet, dann sollten Sie den Quellcode, mit dem sie erstellt wurde, einstufen, NICHT den Quellcode, für den meine App erstellt wurde. "Warum müssen Sie die Quelle von Android selbst verfolgen?" Viele Gründe. Mindestens zweimal am Tag betrete ich das SDK (nur wegen dieses Problems am 21.). Im Moment versuche ich Cross SDK Support anzubieten und sie funktionieren anders unter der Haube. Ich würde gerne sehen warum, wenn ich durchtrete. –