如何启动罐在Android ICS“EXEC app_process”ICS、Android、app_process、EXEC

2023-09-05 09:54:28 作者:风月不等闲

我有3个设备。

1.base上CM9(安卓4.0.4)。

1.base on cm9(android 4.0.4).

2.htcg14(安卓4.0.3)

2.htcg14(android 4.0.3)

3.moto在MIUI ME525基地(安卓2.2)

3.moto me525 base on miui(android 2.2)

它们都植根。

余exec的下面在装置1和3的终端的code中,过程工作正常。 但装置2,这是行不通的。

I exec the code below in the terminal on device 1 and 3,the process works fine. But device 2,it doesn't work.

su
export CLASSPATH=/sdcard/foo.jar
exec app_process /system/bin xx.xx.Test '$@'

日志

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

当我Exec的这些code在Java中,设备1和2不work.They具有相同的error.About装置3,我不知道结果,因为有人找回他的设备。

When I exec these code in java,device 1 and 2 don't work.They have the same error.About device 3,I don't know the result,because someone get back his device.

帮助!任何想法?

推荐答案

好像是发射dalvikvm的时候,您的 LD_LIBRARY_PATH 是不正确的环境设置。 在ICS和放大器; JB,dalvikvm需要的 LD_LIBRARY_PATH 有一定的路径了。默认值为 /供应商/ lib目录下:/系统/ lib目录,虽然平时 /系统/ lib目录就足够了。否则,你会看到例外。

It seems like that when launching dalvikvm, your LD_LIBRARY_PATH is not correctly set in the environment. In ICS & JB, dalvikvm requires LD_LIBRARY_PATH to have certain path in it. The default is /vendor/lib:/system/lib, although usually /system/lib is enough. Else you would see the exception.

您可以尝试添加导出LD_LIBRARY_PATH = /供应商/ lib目录下:/系统/ lib目录命令后,在你的脚本。

You may try to add export LD_LIBRARY_PATH=/vendor/lib:/system/lib after the su command in your script.

如果您EUID不符合你的uid, LD_LIBRARY_PATH 可从环境中剥离。您可以使用 ID ID -r 来检查它们是否匹配。你也可以检查 /系统/斌/ mksh 是setuid'ed,因为这也可能会导致问题。

If your euid does not match your uid, LD_LIBRARY_PATH may be stripped from the environment. You can use id and id -r after su to check if they match. You may also check if /system/bin/mksh is setuid'ed, since this may also cause the problem.