Отладка API диспетчера пакетов Android

Я пытаюсь понять рабочие детали API диспетчера пакетов на андроиде. Я использую Android Studio для отладки. Я создал код AOSP и запускаю его на эмуляторе. Android Studio предоставляет способ подключения к процессам Android; однако я не уверен, к какому процессу подключиться для отладки PackageManager. Я предположил, что имя процесса будет com.android.packageinstaller, но он никогда не отображается в списке отлаживаемых процессов, даже когда я пытаюсь установить apk сбоку через adb, хотя мои строки печати в коде AOSP кажутся показать (что означает, что процесс запущен). Может ли кто-нибудь объяснить мне, как мне следует отлаживать диспетчер пакетов? К какому процессу я должен подключиться?

Большое спасибо!


person Alice Van Der Land    schedule 22.11.2016    source источник


Ответы (2)


Попробуйте подключиться к system_process. Большинство основных служб, составляющих Android, работают в этом процессе.

person satur9nine    schedule 24.11.2016

Диспетчер пакетов, как и многие другие важные службы, построены на основе 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), а не приложение.

«Приложение», которое запускает этот код, является настраиваемым экземпляром основной виртуальной машины Dalvik, которую вы найдете в Zygote.java («Главный» класс для виртуальной машины Dalvik). См. здесь: 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.

Поэтому, если вы хотите отладить код диспетчера пакетов, лучше всего подключиться к этому процессу. Вы также можете рассмотреть возможность добавления операторов журнала в код менеджера пакетов в фреймворке и просмотра их также или вместо них.

person scorpiodawg    schedule 25.11.2016