You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android应用托管ARM可执行文件时遇error=2:无此文件或目录

解决Android中运行内部存储ARM可执行文件的"error=2, No such file or directory"问题

你遇到的这个错误其实有点迷惑性——file命令明明能识别出这个ELF文件,但执行时却提示找不到文件,核心原因要么是文件权限不对,要么是动态链接依赖不兼容,下面一步步给你解决:

  • 第一步:先给可执行文件加上执行权限
    刚复制到APP内部存储的文件默认是没有可执行权限的,系统会拒绝运行它。你可以在执行前先检查并设置权限:

    File smileExtractFile = new File(context.getFilesDir(), "SMILExtract-static");
    // 检查是否有执行权限,没有就加上
    if (!smileExtractFile.canExecute()) {
        smileExtractFile.setExecutable(true);
    }
    
  • 第二步:处理动态链接的依赖问题
    从file命令的输出能看到,这是一个动态链接的ELF共享对象(标注了dynamic (/usr/lib/libc.so.1)),而不是静态编译的可执行文件:

    /data/user/0/app.me.phonestudy/files/SMILExtract-static: ELF shared object, 32-bit LSB arm, dynamic (/usr/lib/libc.so.1), for Android 21, built by ...

    这里有两个关键问题:

    1. Android系统里根本没有/usr/lib/libc.so.1这个路径,Android的C标准库是/system/lib/libc.so(32位)或/system/lib64/libc.so(64位);
    2. APP的内部存储目录不在系统默认的动态库搜索路径里。

    你有两个解决方案可选:

    • 方案A(推荐):如果能拿到这个可执行文件的源码,重新编译成静态链接版本。编译时加上-static参数,把所有依赖的库都打包进可执行文件里,这样就不用依赖系统的动态库了,执行起来更省心。
    • 方案B:如果没法重新编译,就手动指定Android的动态链接器,并设置库搜索路径。32位ARM设备的动态链接器一般是/system/bin/linker,执行时可以这样调用:
      String linkerPath = "/system/bin/linker";
      String executablePath = new File(context.getFilesDir(), "SMILExtract-static").getAbsolutePath();
      // 设置LD_LIBRARY_PATH,包含系统库目录和你的文件所在目录
      String[] envVars = new String[]{"LD_LIBRARY_PATH=/system/lib:" + context.getFilesDir().getAbsolutePath()};
      // 用链接器来加载执行你的文件
      Process process = Runtime.getRuntime().exec(new String[]{linkerPath, executablePath}, envVars);
      

    注意:部分设备的链接器路径可能是/system/bin/linker-arm,你可以提前适配常见路径,或者通过adb命令确认设备上的实际路径。

  • 第三步:确认应用架构匹配
    你的可执行文件是32位ARM的,要确保你的APP支持32位ARM架构。在build.gradle(Module级)里检查ndk.abiFilters配置,要包含armeabi-v7a:

    android {
        defaultConfig {
            ndk {
                abiFilters 'armeabi-v7a', 'arm64-v8a' // 至少包含32位ARM架构
            }
        }
    }
    

    如果你的APP只支持64位架构,32位的可执行文件是无法运行的。

内容的提问来源于stack exchange,提问作者P. Ehrich

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 07:52:11