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

使用Runtime.getRuntime()在Android中执行交叉编译程序,android,Android,这里是Android开发者新手。我正在尝试为一个从Android shell(使用“adb shell”)运行的小型交叉编译应用程序在Android中开发一个GUI包装器。该应用程序执行一些加密操作,并需要gmp和libpaillier库。当从Android shell执行时,应用程序按预期运行。但是,当尝试使用Runtime.getRuntime().exec(“cmd”)对象从Android应用程序层(Android活动)执行它时,我得到如下所示的分段错误。它仅在使用加密操作时发生(例如,仅

这里是Android开发者新手。我正在尝试为一个从Android shell(使用“adb shell”)运行的小型交叉编译应用程序在Android中开发一个GUI包装器。该应用程序执行一些加密操作,并需要gmp和libpaillier库。当从Android shell执行时,应用程序按预期运行。但是,当尝试使用Runtime.getRuntime().exec(“cmd”)对象从Android应用程序层(Android活动)执行它时,我得到如下所示的分段错误。它仅在使用加密操作时发生(例如,仅在显示命令行参数选项时工作正常)。如果有任何建议能帮助我解决这个问题,我将不胜感激。谢谢

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}  
07-26 14:58:12.633:信息/调试(10175):******************************
07-26 14:58:12.633:INFO/DEBUG(10175):构建指纹:“google/soju/crespo:2.3.4/GRJ22/121341:用户/发布密钥”

07-26 14:58:12.633:INFO/DEBUG(10175):pid:12281,tid:12281>>>/data/test/mptest首先,我建议使用NDK,除非这是一个巨大的不便。这将使事情变得容易得多。(还请记住,不久将有基于Intel的Android设备出现,因此您可能希望在支持多种体系结构的过程中让自己变得更容易)


因为您能够运行可执行文件本身,所以我建议只使用printf语句对其进行涂抹,直到您通过分而治之缩小错误点。如果您正在进行文件访问,您的进程可能没有访问权限?

另一个愚蠢的问题-您为什么不使用NDK?EboMike,非常感谢。正如您所建议的,问题是应用程序没有访问权限的文件访问。现在它运行良好。我确实考虑过使用NDK,但这只是一个小的演示类,所以我想让它更简单。谢谢如果只是为了一门课,那么你选择这条路线是对的。祝项目顺利!