V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
FlyfishXu
V2EX  ›  问与答

安卓开发中如何在应用内调用可执行文件(如 adb 等)

  •  
  •   FlyfishXu · 2020-05-01 21:17:53 +08:00 · 1104 次点击
    这是一个创建于 1480 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近在做的工程需要在 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 服务(报错即为这一步)

    望有类似开发经验的大牛解答 感激不尽

    2 条回复    2023-08-09 23:45:04 +08:00
    HaveYouTall
        1
    HaveYouTall  
       2022-09-19 12:40:16 +08:00
    我也是遇到这个问题,请问你解决了吗,有没有大牛能够帮忙解答一下呀,谢谢啦
    FlyfishXu
        2
    FlyfishXu  
    OP
       285 天前
    @HaveYouTall 不好意思好久没上 V2EX 了 解决了 我为此写了篇博客 可参考: https://flyfishxu.com/pack-elf-into-apk/
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1429 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 17:26 · PVG 01:26 · LAX 10:26 · JFK 13:26
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.