调试Android Package Manager API

时间:2016-11-22 18:04:09

标签: android android-source android-package-managers

我想了解Android上Package Manager API的工作细节。我正在使用Android Studio进行调试。我已经构建了AOSP代码并在模拟器上运行它。 Android Studio提供了一种附加到Android进程的方法;但是,我不确定连接到哪个进程来调试PackageManager。我假设进程的名称是com.android.packageinstaller,但它从未显示在可调试进程列表中,即使我尝试通过adb安装apk,尽管我在AOSP代码中的打印行似乎显示(表示进程正在运行)。有人可以解释一下我应该如何调试软件包管理器?我应该连接哪个流程?

非常感谢!

2 个答案:

答案 0 :(得分:1)

尝试连接system_process。组成Android的大多数核心服务都在这个过程中运行。

答案 1 :(得分:1)

程序包管理器以及许多其他关键服务都是基于frameworks/base/services/(请参阅:http://androidxref.com/6.0.1_r10/xref/frameworks/base/services/)构建到services.jar工件(http://androidxref.com/6.0.1_r10/xref/frameworks/base/services/Android.mk#7)而不是一个应用程序。

" app"运行此代码的恰好是您在Zygote.java中找到的核心Dalvik虚拟机的自定义实例("主要"用于Dalvik VM的类)。见这里:http://androidxref.com/6.0.1_r10/xref/frameworks/base/core/java/com/android/internal/os/ZygoteInit.java#514

当Zygote进程(所有Android Java 进程的根进程)启动时,它被命名为app_process但是在启动运行核心系统服务时,它会运行特殊的命令行参数,使其自己调用system_server

因此,如果要调试程序包管理器代码,最好是附加到该进程。您还可以考虑将日志语句添加到框架中的包管理器代码中,并查看它们或代替它们。