FlyfishXu
V2EX  ›  问与答

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

  •  
  •   FlyfishXu · May 1, 2020 · 1918 views
    This topic created in 2230 days ago, the information mentioned may be changed or developed.

    最近在做的工程需要在 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 replies    2023-08-09 23:45:04 +08:00
    HaveYouTall
        1
    HaveYouTall  
       Sep 19, 2022
    我也是遇到这个问题,请问你解决了吗,有没有大牛能够帮忙解答一下呀,谢谢啦
    FlyfishXu
        2
    FlyfishXu  
    OP
       Aug 9, 2023
    @HaveYouTall 不好意思好久没上 V2EX 了 解决了 我为此写了篇博客 可参考: https://flyfishxu.com/pack-elf-into-apk/
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2887 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 15:30 · PVG 23:30 · LAX 08:30 · JFK 11:30
    ♥ Do have faith in what you're doing.