Android:执行exec app_process启动jar失败原因

问题

adb shell中直接执行命令脚本可正常执行

su
export CLASSPATH=Test.jar
exec app_process /system/bin xx.xx.Test $0

但通过Runtime.getRuntime().exec("sh")执行时,却没有任何效果。

原因

在安卓4.4下正常运行,安卓4.2却不行。一度怀疑是dx --dex打包进去的依赖包无法兼容API 17导致。
最后在Stack Overflow上挖到了同样的旧坑
原文如下:

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.
You may try to add export LD_LIBRARY_PATH=/vendor/lib:/system/lib after the su command in your script.
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.

大致意思是,当执行su命令时,如果euiduid不匹配,则可能会从环境中删除环境变量LD_LIBRARY_PATH

解决办法

在命令脚本su命令后,增加如下命令:

export LD_LIBRARY_PATH=/vendor/lib:/system/lib
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值