Android开发者新手在这里。我正在尝试在Android中开发一个GUI包装器,用于从Android shell运行的小型交叉编译应用程序(使用“adb shell”)。应用程序执行一些加密操作,需要gmp和libpaillier库。从Android shell执行时,应用程序按预期运行。但是,当尝试使用Runtime.getRuntime()。exec(“cmd”)对象从Android应用程序层(Android Activity)执行它时,我得到下面显示的分段错误错误。它仅在使用加密操作时发生(例如,仅在显示命令行参数选项时才能正常工作)。我会感谢任何可以帮助我找出这个问题的建议。谢谢。
07-26 14:58:12.633: INFO/DEBUG(10175): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
07-26 14:58:12.633: INFO/DEBUG(10175): Build fingerprint: 'google/soju/crespo:2.3.4/GRJ22/121341:user/release-keys'
07-26 14:58:12.633: INFO/DEBUG(10175): pid: 12281, tid: 12281 >>> /data/test/mptest <<<
07-26 14:58:12.633: INFO/DEBUG(10175): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0000000c
07-26 14:58:12.633: INFO/DEBUG(10175): r0 00000000 r1 00021180 r2 ffffff1c r3 3fbae818
07-26 14:58:12.633: INFO/DEBUG(10175): r4 afd41504 r5 bec40ad8 r6 80000000 r7 3fbae818
07-26 14:58:12.633: INFO/DEBUG(10175): r8 00000000 r9 00000000 10 00000000 fp bec40c84
07-26 14:58:12.633: INFO/DEBUG(10175): ip 00024188 sp bec40840 lr afd18821 pc afd1a894 cpsr a0000030
07-26 14:58:12.633: INFO/DEBUG(10175): d0 afd46484afd46410 d1 6f427362b606cc00
07-26 14:58:12.633: INFO/DEBUG(10175): d2 0000000000000000 d3 0000000000000000
07-26 14:58:12.633: INFO/DEBUG(10175): d4 0000000000000000 d5 0000000000000000
07-26 14:58:12.633: INFO/DEBUG(10175): d6 0000000000000000 d7 0000000000000000
07-26 14:58:12.633: INFO/DEBUG(10175): d8 0000000000000000 d9 0000000000000000
07-26 14:58:12.633: INFO/DEBUG(10175): d10 0000000000000000 d11 0000000000000000
07-26 14:58:12.633: INFO/DEBUG(10175): d12 0000000000000000 d13 0000000000000000
07-26 14:58:12.633: INFO/DEBUG(10175): d14 0000000000000000 d15 0000000000000000
07-26 14:58:12.633: INFO/DEBUG(10175): d16 0000000000000000 d17 0000000000000000
07-26 14:58:12.633: INFO/DEBUG(10175): d18 0000000000000000 d19 0000000000000000
07-26 14:58:12.633: INFO/DEBUG(10175): d20 0000000000000000 d21 0000000000000000
07-26 14:58:12.633: INFO/DEBUG(10175): d22 0000000000000000 d23 0000000000000000
07-26 14:58:12.633: INFO/DEBUG(10175): d24 0000000000000000 d25 0000000000000000
07-26 14:58:12.633: INFO/DEBUG(10175): d26 0000000000000000 d27 0000000000000000
07-26 14:58:12.633: INFO/DEBUG(10175): d28 0000000000000000 d29 0000000000000000
07-26 14:58:12.633: INFO/DEBUG(10175): d30 0000000000000000 d31 0000000000000000
07-26 14:58:12.633: INFO/DEBUG(10175): scr 00000000
07-26 14:58:12.645: INFO/DEBUG(10175): #00 pc 0001a894 /system/lib/libc.so
07-26 14:58:12.649: INFO/DEBUG(10175): #01 lr afd18821 /system/lib/libc.so
07-26 14:58:12.649: INFO/DEBUG(10175): code around pc:
07-26 14:58:12.649: INFO/DEBUG(10175): afd1a874 00000000 4ff0e92d 8b02ed2d f5ad4db5
07-26 14:58:12.649: INFO/DEBUG(10175): afd1a884 46807d17 950f447d 9c0f4615 910e4ab2
07-26 14:58:12.649: INFO/DEBUG(10175): afd1a894 300cf8b8 462c58a1 6808071a d5029095
07-26 14:58:12.649: INFO/DEBUG(10175): afd1a8a4 3010f8d8 4640b963 ffb4f001 f7f7b140
07-26 14:58:12.649: INFO/DEBUG(10175): afd1a8b4 2109fae7 f04f6001 900c30ff b9baf001
07-26 14:58:12.649: INFO/DEBUG(10175): code around lr:
07-26 14:58:12.649: INFO/DEBUG(10175): afd18800 ffffff70 ffffff6c ffffff74 ffffff78
07-26 14:58:12.649: INFO/DEBUG(10175): afd18810 b503b40e f852aa03 92011b04 f82cf002
07-26 14:58:12.649: INFO/DEBUG(10175): afd18820 400ce8bd 4770b003 300cf9b0 4604b510
07-26 14:58:12.649: INFO/DEBUG(10175): afd18830 f7f9b933 2109fb27 f04f6001 e01530ff
07-26 14:58:12.649: INFO/DEBUG(10175): afd18840 68106b02 f104b140 45600c40 f7fbd001
07-26 14:58:12.652: INFO/DEBUG(10175): stack:
07-26 14:58:12.652: INFO/DEBUG(10175): bec40800 00000020
07-26 14:58:12.652: INFO/DEBUG(10175): bec40804 00024224 /data/test/mptest
07-26 14:58:12.652: INFO/DEBUG(10175): bec40808 00000010
07-26 14:58:12.652: INFO/DEBUG(10175): bec4080c 00000020
07-26 14:58:12.652: INFO/DEBUG(10175): bec40810 00024224 /data/test/mptest
07-26 14:58:12.652: INFO/DEBUG(10175): bec40814 00000010
07-26 14:58:12.656: INFO/DEBUG(10175): bec40818 00000010
07-26 14:58:12.656: INFO/DEBUG(10175): bec4081c b0009468 /system/bin/linker
07-26 14:58:12.656: INFO/DEBUG(10175): bec40820 ffffffff
07-26 14:58:12.656: INFO/DEBUG(10175): bec40824 00000000
07-26 14:58:12.656: INFO/DEBUG(10175): bec40828 6b6505b0
07-26 14:58:12.656: INFO/DEBUG(10175): bec4082c e69d3d64
07-26 14:58:12.656: INFO/DEBUG(10175): bec40830 cfcaab85
07-26 14:58:12.656: INFO/DEBUG(10175): bec40834 520fb67e
07-26 14:58:12.656: INFO/DEBUG(10175): bec40838 df002777
07-26 14:58:12.660: INFO/DEBUG(10175): bec4083c e3a070ad
07-26 14:58:12.660: INFO/DEBUG(10175): #00 bec40840 69d2c15d
07-26 14:58:12.660: INFO/DEBUG(10175): bec40844 77929325
07-26 14:58:12.660: INFO/DEBUG(10175): bec40848 feb7d8da
07-26 14:58:12.660: INFO/DEBUG(10175): bec4084c 686a93ac
07-26 14:58:12.660: INFO/DEBUG(10175): bec40850 354e5ebd
07-26 14:58:12.660: INFO/DEBUG(10175): bec40854 84a276b3
07-26 14:58:12.664: INFO/DEBUG(10175): bec40858 56777d01
07-26 14:58:12.664: INFO/DEBUG(10175): bec4085c 43d437cf
07-26 14:58:12.664: INFO/DEBUG(10175): bec40860 c678f383
07-26 14:58:12.664: INFO/DEBUG(10175): bec40864 2d2f7b98
07-26 14:58:12.664: INFO/DEBUG(10175): bec40868 45a2a873
07-26 14:58:12.664: INFO/DEBUG(10175): bec4086c d1230fb5
07-26 14:58:12.664: INFO/DEBUG(10175): bec40870 11ea3141
07-26 14:58:12.668: INFO/DEBUG(10175): bec40874 30b0ae58
07-26 14:58:12.668: INFO/DEBUG(10175): bec40878 00021180 /data/test/mptest
07-26 14:58:12.668: INFO/DEBUG(10175): bec4087c afd41504 /system/lib/libc.so
07-26 14:58:12.668: INFO/DEBUG(10175): bec40880 000001c4
07-26 14:58:12.668: INFO/DEBUG(10175): bec40884 00000001
07-26 14:58:15.652: DEBUG/dalvikvm(7064): GC_EXPLICIT freed 168K, 30% free 7359K/10439K, external 5458K/6546K, paused 87ms
07-26 14:58:21.613: DEBUG/dalvikvm(12270): Calling exit(1)
07-26 14:58:21.660: INFO/ActivityManager(106): Process com.android.emoc (pid 12270) has died.
07-26 14:58:21.664: INFO/WindowManager(106): WIN DEATH: Window{4058db50 com.android.emoc/com.android.emoc.EmocActivity paused=false}
答案 0 :(得分:0)
首先,我建议使用NDK,除非这是一个巨大的不便。它会让事情变得更容易。 (另请注意,很快就会有基于英特尔的Android设备,因此您可能希望让您更轻松地支持多种架构)。
由于你能够自己运行可执行文件,我建议用printf语句对其进行修改,直到你通过分而治之的方式缩小它的错误点。如果您正在进行文件访问,您的进程可能没有访问权限吗?