2016-11-22 7 views
1

Ich versuche, die Arbeitsdetails der Package Manager API auf Android zu verstehen. Ich verwende Android Studio, um es zu debuggen. Ich habe den AOSP-Code erstellt und starte ihn auf einem Emulator. Android Studio bietet eine Möglichkeit zum Anhängen an Android-Prozesse. Ich bin mir jedoch nicht sicher, mit welchem ​​Prozess eine Verbindung hergestellt werden muss, um den PackageManager zu debuggen. Ich nahm an, der Name des Prozesses wäre com.android.packageinstaller, aber es erscheint nie auf der Liste der debuggable Prozesse, auch wenn ich versuche, eine apk auf der Seite über adb zu installieren, obwohl meine Druckzeilen im AOSP-Code scheint Erscheinen (was bedeutet, dass der Prozess läuft). Könnte mir bitte jemand erklären, wie ich den Paket-Manager debuggen sollte? Mit welchem ​​Prozess soll ich mich verbinden?Debugging Android Package Manager API

Vielen Dank!

Antwort

1

Versuchen Sie den Anschluss an die system_process. Die meisten der Kerndienste, aus denen Android besteht, laufen in diesem Prozess.

1

Der Package Manager sowie viele andere wichtige Dienste sind direkt an der frameworks/base/services/ gebaut (siehe: http://androidxref.com/6.0.1_r10/xref/frameworks/base/services/) in ein services.jar Artefakt, das eine Bibliothek (http://androidxref.com/6.0.1_r10/xref/frameworks/base/services/Android.mk#7) und nicht eine App.

Die "App", die diesen Code ausführt, ist eine benutzerdefinierte Instanziierung der Dalvik-Kernmaschine, die Sie in Zygote.java finden (die "Main" -Klasse für die Dalvik-VM). Siehe hier: http://androidxref.com/6.0.1_r10/xref/frameworks/base/core/java/com/android/internal/os/ZygoteInit.java#514.

Wenn der Zygote Prozess (der Root-Prozess alles Android Java Prozesse) gestartet wird es app_process genannt wird, aber wenn damit begonnen, die Kernsystemdienste für den Betrieb, dann wird es mit einem speziellen Befehlszeilenargument ausführen, die es bewirkt, rufen Sie sich selbst an system_server.

Wenn Sie also den Package Manager-Code debuggen möchten, sollten Sie diesen Prozess am besten anhängen. Sie könnten auch in Erwägung ziehen, Protokollanweisungen in den Code des Paketmanagers im Framework zu streuen und diese ebenso oder stattdessen zu betrachten.

Verwandte Themen