Как построить модуль PM в Marshmallow? - PullRequest
0 голосов
/ 25 марта 2019

Я пытаюсь собрать модуль pm в эмуляторе Marshmallow.

Я выбираю aosp 6.0.1_r1 x86_64 и эмулятор Android 6 x86_64 (без воспроизведения), созданный в AVD.

Я успешно выполнил оба framework, а затем pm модули с LANG=C make framework -j4 VERBOSE=1 и LANG=C make pm -j4 VERBOSE=1 соответственно.Я также пытаюсь проверить простым нажатием framework.jar -> перезагрузка кажется без сбоев.

Теперь я пытаюсь pm:

$ adb push out/target/product/generic_x86_64/system/framework/oat/x86/pm.odex /system/framework/oat/x86/
$ adb push out/target/product/generic_x86_64/system/framework/oat/x86_64/pm.odex /system/framework/oat/x86_64/
$ adb push out/target/product/generic/system/framework/pm.jar /system/framework/

После перезагрузки эмулятора, команда pm показывает только команду"Прервано" и ничего не делать.

root@generic_x86_64:/ # pm
Aborted

Как мне его отладить?Я думаю, что, возможно, пропустил некоторые шаги, но я новичок в aosp.

Размер pm.odex из моей сборки и эмулятора равны:

xb@dnxb:~/Downloads/pm/emulator/2$ ls -l
total 328
-rw-r--r-- 1 xiaobai xiaobai 168704 Mac  25 18:02 pm_64.odex
-rw-r--r-- 1 xiaobai xiaobai 160236 Mac  25 18:02 pm.odex
xb@dnxb:~/Downloads/pm/emulator/2$ 

$ ls -la out/target/product/generic_x86_64/system/framework/oat/x86/pm.odex 
-rw-r--r-- 1 xiaobai xiaobai 160236 Mac  25 17:54 out/target/product/generic_x86_64/system/framework/oat/x86/pm.odex

$ ls -la out/target/product/generic_x86_64/system/framework/oat/x86_64/pm.odex  
-rw-r--r-- 1 xiaobai xiaobai 168704 Mac  25 17:54 out/target/product/generic_x86_64/system/framework/oat/x86_64/pm.odex

logcat показывает:

03-26 04:53:24.996  2461  2461 D AndroidRuntime: >>>>>> START com.android.internal.os.RuntimeInit uid 0 <<<<<<
03-26 04:53:24.998  2461  2461 D AndroidRuntime: CheckJNI is ON
03-26 04:53:25.011  2461  2461 D ICU     : No timezone override file found: /data/misc/zoneinfo/current/icu/icu_tzdata.dat
03-26 04:53:25.018  2461  2461 E appproc : ERROR: could not find class 'com.android.commands.pm.Pm'
03-26 04:53:25.022  2461  2461 F art     : art/runtime/java_vm_ext.cc:410] JNI DETECTED ERROR IN APPLICATION: JNI NewGlobalRef called with pending exception java.lang.ClassNotFoundException: Didn't find class "com.android.commands.pm.Pm" on path: DexPathList[[zip file "/system/framework/pm.jar"],nativeLibraryDirectories=[/vendor/lib64, /system/lib64]]
03-26 04:53:25.022  2461  2461 F art     : art/runtime/java_vm_ext.cc:410]   at java.lang.Class dalvik.system.BaseDexClassLoader.findClass(java.lang.String) (BaseDexClassLoader.java:56)
03-26 04:53:25.022  2461  2461 F art     : art/runtime/java_vm_ext.cc:410]   at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:511)
03-26 04:53:25.022  2461  2461 F art     : art/runtime/java_vm_ext.cc:410]   at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:469)
03-26 04:53:25.022  2461  2461 F art     : art/runtime/java_vm_ext.cc:410] 
03-26 04:53:25.022  2461  2461 F art     : art/runtime/java_vm_ext.cc:410]     in call to NewGlobalRef
03-26 04:53:25.022  2461  2461 F art     : art/runtime/java_vm_ext.cc:410] "main" prio=5 tid=1 Runnable
03-26 04:53:25.022  2461  2461 F art     : art/runtime/java_vm_ext.cc:410]   | group="main" sCount=0 dsCount=0 obj=0x12c2d100 self=0x7f7c3cd7ba00
03-26 04:53:25.022  2461  2461 F art     : art/runtime/java_vm_ext.cc:410]   | sysTid=2461 nice=0 cgrp=default sched=0/0 handle=0x7f7c406ed200
03-26 04:53:25.022  2461  2461 F art     : art/runtime/java_vm_ext.cc:410]   | state=R schedstat=( 0 0 0 ) utm=14 stm=0 core=1 HZ=100
03-26 04:53:25.022  2461  2461 F art     : art/runtime/java_vm_ext.cc:410]   | stack=0x7fff163c2000-0x7fff163c4000 stackSize=8MB
03-26 04:53:25.022  2461  2461 F art     : art/runtime/java_vm_ext.cc:410]   | held mutexes= "mutator lock"(shared held)
03-26 04:53:25.022  2461  2461 F art     : art/runtime/java_vm_ext.cc:410]   native: #00 pc 00000000005678e7  /system/lib64/libart.so (art::DumpNativeStack(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, int, char const*, art::ArtMethod*, void*)+215)
...

Если я попытаюсь собрать модуль dumpsys, т.е. /system/bin/dumpsys, никаких проблем с запуском.И если я копирую обратно с оригинальным pm.odex, это тоже не проблема, даже не нужно перезагружаться.

Моя платформа - Ubuntu 18.04.Любая помощь будет признательна.

...