and*_*_su 2 android jar process classloader
我有3个设备.
1.base on cm9(android 4.0.4).
2.htcg14(android 4.0.3)
3.moto me525基于miui(android 2.2)
他们都扎根了.
我在设备1和3的终端上执行以下代码,过程正常.但设备2,它不起作用.
su
export CLASSPATH=/sdcard/foo.jar
exec app_process /system/bin xx.xx.Test '$@'
Run Code Online (Sandbox Code Playgroud)
日志
W/dalvikvm(12364): Exception Ljava/lang/NullPointerException; thrown while initializing Ljava/lang/System;
W/dalvikvm(12364): Exception Ljava/lang/ExceptionInInitializerError; thrown while initializing Ljava/lang/ClassLoader$SystemClassLoader;
W/dalvikvm(12364): WARNING: system class loader is NULL (setting main ctxt)
W/dalvikvm(12364): Warning: tracked references remain post-initialization
W/dalvikvm(12364): MAIN reference table (0xf9a388) dump:
W/dalvikvm(12364): Last 1 entries (of 1):
E/dalvikvm(12364): Class lookup Ljava/lang/Daemons; attempted with exception pending
W/dalvikvm(12364): Pending exception is:
I/dalvikvm(12364): java.lang.ExceptionInInitializerError:
I/dalvikvm(12364): at java.lang.ClassLoader.getSystemClassLoader(ClassLoader.java:125)
I/dalvikvm(12364): at dalvik.system.NativeStart.main(Native Method)
I/dalvikvm(12364): Caused by:
I/dalvikvm(12364): java.lang.ExceptionInInitializerError:
I/dalvikvm(12364): at java.lang.ClassLoader.createSystemClassLoader(ClassLoader.java:100)
I/dalvikvm(12364): at java.lang.ClassLoader.access$000(ClassLoader.java:65)
I/dalvikvm(12364): at java.lang.ClassLoader$SystemClassLoader.<clinit>(ClassLoader.java:81)
I/dalvikvm(12364): at java.lang.ClassLoader.getSystemClassLoader(ClassLoader.java:125)
I/dalvikvm(12364): at dalvik.system.NativeStart.main(Native Method)
I/dalvikvm(12364): Caused by:
I/dalvikvm(12364): java.lang.NullPointerException:
I/dalvikvm(12364): at java.util.Hashtable.put(Hashtable.java:365)
I/dalvikvm(12364): at java.lang.System.initSystemProperties(System.java:286)
I/dalvikvm(12364): at java.lang.System.getProperties(System.java:260)
I/dalvikvm(12364): at java.lang.System.getProperty(System.java:425)
I/dalvikvm(12364): at java.lang.System.getProperty(System.java:406)
I/dalvikvm(12364): at java.lang.System.<clinit>(System.java:90)
I/dalvikvm(12364): at java.lang.ClassLoader.createSystemClassLoader(ClassLoader.java:100)
I/dalvikvm(12364): at java.lang.ClassLoader.access$000(ClassLoader.java:65)
I/dalvikvm(12364): at java.lang.ClassLoader$SystemClassLoader.<clinit>(ClassLoader.java:81)
I/dalvikvm(12364): at java.lang.ClassLoader.getSystemClassLoader(ClassLoader.java:125)
I/dalvikvm(12364): at dalvik.system.NativeStart.main(Native Method)
I/dalvikvm(12364): DALVIK THREADS:
I/dalvikvm(12364): (mutexes: tll=0 tsl=0 tscl=0 ghl=0)
I/dalvikvm(12364): "main" prio=5 tid=1 RUNNABLE
I/dalvikvm(12364): | group="main" sCount=0 dsCount=0 obj=0x40aa1490 self=0xf99d30
I/dalvikvm(12364): | sysTid=12364 nice=0 sched=0/0 cgrp=default handle=1074107592
I/dalvikvm(12364): | schedstat=( 0 0 0 ) utm=18 stm=7 core=0
I/dalvikvm(12364): at dalvik.system.NativeStart.main(Native Method)
I/dalvikvm(12364):
E/dalvikvm(12364): VM aborting
F/libc (12364): Fatal signal 11 (SIGSEGV) at 0xdeadd00d (code=1)
I/DEBUG ( 4218): debuggerd: 2012-08-02 14:29:57
I/DEBUG ( 4218): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
I/DEBUG ( 4218): Build fingerprint: 'htc_asia_tw/htc_pyramid/pyramid:4.0.3/IML74K/391535.6:user/release-keys'
I/DEBUG ( 4218): pid: 12364, tid: 12364 >>> app_process <<<
I/DEBUG ( 4218): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr deadd00d
Run Code Online (Sandbox Code Playgroud)
当我在java中执行这些代码时,设备1和2不起作用.它们有相同的错误.关于设备3,我不知道结果,因为有人拿回他的设备.
帮忙!任何想法?
看起来在启动dalvikvm时,您的LD_LIBRARY_PATH未在环境中正确设置.在ICS和JB中,dalvikvm要求LD_LIBRARY_PATH在其中具有特定路径.默认是/vendor/lib:/system/lib,虽然通常/system/lib就足够了.否则你会看到异常.
您可以尝试在脚本中添加命令export LD_LIBRARY_PATH=/vendor/lib:/system/lib后添加su.
如果您的euid与您的uid不匹配,则LD_LIBRARY_PATH可能会从环境中剥离.您可以使用id和id -r之后su检查它们是否匹配.您也可以检查是否/system/bin/mksh已设置,因为这也可能导致问题.
| 归档时间: |
|
| 查看次数: |
6118 次 |
| 最近记录: |