使用Runtime.getRuntime()在Android中执行交叉编译的程序

时间:2011-07-26 19:11:52

标签: android

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}  

1 个答案:

答案 0 :(得分:0)

首先,我建议使用NDK,除非这是一个巨大的不便。它会让事情变得更容易。 (另请注意,很快就会有基于英特尔的Android设备,因此您可能希望让您更轻松地支持多种架构)。

由于你能够自己运行可执行文件,我建议用printf语句对其进行修改,直到你通过分而治之的方式缩小它的错误点。如果您正在进行文件访问,您的进程可能没有访问权限吗?