最近在做的工程需要在 apk 中调用 adb 等可执行文件,目前的思路是在将所需要的文件放在 res/raw 下,然后在需要调用的时候复制到 data/data/com.xxx.xxx/files 下,然后 chmod 0775 获取执行权限再通过 Runtime 执行。 这套方案在 Android 类原生系统上工作正常(如 Piexel Experience,RR,Lineage,Mokee 等),但是在部分深度定制的系统( MIUI 、EMUI )上遇到了: java.io.IOException: Cannot run program "/data/user/0/com.xxx.xxx/files/./adb": error=13, Permission denied 的问题
详细代码如下:
copyADB(filepath = R.raw.adb, filename = "adb") //提取文件到 com.xxx.xxx/files/下
Runtime.getRuntime().exec("chmod 0775 ${filesDir}/adb") //赋予执行权限
Runtime.getRuntime().exec("${filesDir}/./adb start-server") //启动 adb 服务(报错即为这一步)
望有类似开发经验的大牛解答 感激不尽
1
HaveYouTall 2022-09-19 12:40:16 +08:00
我也是遇到这个问题,请问你解决了吗,有没有大牛能够帮忙解答一下呀,谢谢啦
|
2
FlyfishXu OP @HaveYouTall 不好意思好久没上 V2EX 了 解决了 我为此写了篇博客 可参考: https://flyfishxu.com/pack-elf-into-apk/
|