我想了解Android上Package Manager API的工作细节。我正在使用Android Studio进行调试。我已经构建了AOSP代码并在模拟器上运行它。 Android Studio提供了一种附加到Android进程的方法;但是,我不确定连接到哪个进程来调试PackageManager。我假设进程的名称是com.android.packageinstaller,但它从未显示在可调试进程列表中,即使我尝试通过adb安装apk,尽管我在AOSP代码中的打印行似乎显示(表示进程正在运行)。有人可以解释一下我应该如何调试软件包管理器?我应该连接哪个流程?
非常感谢!
答案 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
。
因此,如果要调试程序包管理器代码,最好是附加到该进程。您还可以考虑将日志语句添加到框架中的包管理器代码中,并查看它们或代替它们。