试图运行自己的应用程序的Android app_process分段错误

时间:2014-12-31 14:34:55

标签: android adb dalvik

我试图在unrooted设备上运行来自adb shell的java应用程序/脚本,而不首先将其作为包安装。我尝试以与例如相同的方式使用app_process。 am正在运行 - 但是我遇到了分段错误。我想知道这是否有可能考虑到安全性。

这是代码:

public class example {
    public static void main(String[] args) {
        System.out.println("Hello world");
        }
}

这在Windows中运行良好:

$ javac example.java
$ java example
Hello world
$ java -jar example.jar
Hello world

我创建了一个带有清单的example.jar文件和里面的类(我尝试使用和不使用类am不使用可执行jar)并将它们都上传到/sdcard/。现在在shell中(通过adb)我执行以下操作,它只在控制台上生成Segmentation Fault:

base=/system && export CLASSPATH=/sdcard/example.jar && app_process $base/bin example

这是logcat所说的:

D/AndroidRuntime(14289): >>>>>> AndroidRuntime START com.android.internal.os.RuntimeInit <<<<<<
D/AndroidRuntime(14289): CheckJNI is OFF
D/AndroidRuntime(14289): setted country_code = UK
D/AndroidRuntime(14289): setted countryiso_code = GB
D/AndroidRuntime(14289): setted sales_code = TMU
D/AndroidRuntime(14289): readGMSProperty: start
D/AndroidRuntime(14289): readGMSProperty: already setted!!
D/AndroidRuntime(14289): readGMSProperty: end
D/AndroidRuntime(14289): addProductProperty: start
D/dalvikvm(14289): Trying to load lib libjavacore.so 0x0
D/dalvikvm(14289): Added shared lib libjavacore.so 0x0
D/dalvikvm(14289): Trying to load lib libnativehelper.so 0x0
D/dalvikvm(14289): Added shared lib libnativehelper.so 0x0
I/dalvikvm(14289): Zip is good, but no classes.dex inside, and no valid .odex file in the same directory
E/appproc (14289): ERROR: could not find class 'example'
E/JNIHelp (14289): Native registration unable to find class 'android/debug/JNITest', aborting
F/libc    (14289): Fatal signal 11 (SIGSEGV) at 0xdeadbaad (code=1), thread 14289 (app_process)
I/DEBUG   ( 1835): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
I/DEBUG   ( 1835): Build fingerprint: 'samsung/GT-I9100/GT-I9100:4.1.2/JZO54K/I9100XWLSY:user/release-keys'
I/DEBUG   ( 1835): pid: 14289, tid: 14289, name: app_process  >>> app_process <<<
I/DEBUG   ( 1835): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr deadbaad
I/DEBUG   ( 1835):     r0 00000027  r1 deadbaad  r2 40141b0c  r3 00000000
I/DEBUG   ( 1835):     r4 00000000  r5 bec3690c  r6 402a8ea8  r7 00000002
I/DEBUG   ( 1835):     r8 402b1828  r9 400ddfc1  sl 400ddf94  fp 400ddfca
I/DEBUG   ( 1835):     ip 40181fe0  sp bec36908  lr 40113c65  pc 401102fe  cpsr 60000030
I/DEBUG   ( 1835):     d0  0000000000000004  d1  0000000000000000
I/DEBUG   ( 1835):     d2  0000000000000000  d3  0000000000000000
I/DEBUG   ( 1835):     d4  0000000000000000  d5  0000000000000000
I/DEBUG   ( 1835):     d6  0000000000000000  d7  83cc7a9b00000000
I/DEBUG   ( 1835):     d8  0000000000000000  d9  0000000000000000
I/DEBUG   ( 1835):     d10 0000000000000000  d11 0000000000000000
I/DEBUG   ( 1835):     d12 0000000000000000  d13 0000000000000000
I/DEBUG   ( 1835):     d14 0000000000000000  d15 0000000000000000
I/DEBUG   ( 1835):     d16 0000000000000017  d17 0000000000000000
I/DEBUG   ( 1835):     d18 4172e2b5a0000000  d19 0000000000000000
I/DEBUG   ( 1835):     d20 0000000000000000  d21 0000000000000000
I/DEBUG   ( 1835):     d22 0000000000000000  d23 0000000000000000
I/DEBUG   ( 1835):     d24 0000000000000000  d25 0000000000000000
I/DEBUG   ( 1835):     d26 0000000000000000  d27 0000000000000000
I/DEBUG   ( 1835):     d28 0000000000000000  d29 0000000000000000
I/DEBUG   ( 1835):     d30 0000000000000000  d31 0000000000000000
I/DEBUG   ( 1835):     scr 60000010
I/DEBUG   ( 1835):
I/DEBUG   ( 1835): backtrace:
I/DEBUG   ( 1835):     #00  pc 000182fe  /system/lib/libc.so
I/DEBUG   ( 1835):     #01  pc 0000dc04  /system/lib/libc.so (abort+4)
I/DEBUG   ( 1835):     #02  pc 00000955  /system/lib/libnativehelper.so (jniRegisterNativeMethods+72)
I/DEBUG   ( 1835):     #03  pc 0004d4a7  /system/lib/libandroid_runtime.so (android::AndroidRuntime::startReg(_JNIEnv*)+34)
I/DEBUG   ( 1835):     #04  pc 0004d5a5  /system/lib/libandroid_runtime.so (android::AndroidRuntime::start(char const*, char const*)+200)
I/DEBUG   ( 1835):     #05  pc 00000dcf  /system/bin/app_process
I/DEBUG   ( 1835):

有没有办法让这项工作?如果是,我错过了什么 - 我可以在日志中看到ERROR,因此类可能在错误的位置,我可以从.jar文件中获取它,或者从我可以将类放在无根的位置设备

我的目标是使用adb在后台运行Java应用程序/脚本(类似于如何运行am,pm,dumpsys),做一些事情,而设备像往常一样从GUI运行其他东西,所以我不想将其作为包/运行意图安装。

0 个答案:

没有答案