栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Android:执行exec app

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android:执行exec app

问题

在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命令时,如果euid与uid不匹配,则可能会从环境中删除环境变量LD_LIBRARY_PATH。

解决办法

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

export LD_LIBRARY_PATH=/vendor/lib:/system/lib
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/947017.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号