V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
FlyfishXu
V2EX  ›  问与答

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

  •  
  •   FlyfishXu · May 1, 2020 · 1851 views
    This topic created in 2198 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   ·   4564 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 60ms · UTC 10:06 · PVG 18:06 · LAX 03:06 · JFK 06:06
    ♥ Do have faith in what you're doing.