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

Android应用加载.so库报错:dlopen failed e_version:65725求助

解决Android加载.so库时出现的e_version: 65725错误

错误分析

你遇到的java.lang.UnsatisfiedLinkError: dlopen failed: ... has unexpected e_version: 65725,本质是**.so库的ELF版本过高**。65725对应的是ELF版本EV_CURRENT(十六进制0x10001),这是桌面Linux系统使用的新版ELF格式,Android的动态链接器不支持该版本,导致无法加载。

解决步骤

  • 检查.so库的ELF版本
    用readelf工具查看库的ELF头信息:

    readelf -h libgeneraldecryptjni.so
    

    查看输出里的Version字段,如果显示0x10001,就确认是版本不兼容问题。

  • 重新编译.so库
    必须使用Android NDK官方工具链编译,不要用桌面Linux的GCC/Clang:

    • 用ndk-build或CMake配置目标Android API等级(对应你的minSdkVersion),确保编译时使用NDK提供的sysroot和工具链。
    • 编译时指定正确的ABI(比如你用到的arm64-v8a),避免交叉编译时引入桌面平台特性。
  • 校验libs目录结构
    确保src/main/libs下的目录结构符合Android规范:

    src/main/libs/
    ├── arm64-v8a/
    │   └── libgeneraldecryptjni.so
    └── armeabi-v7a/  # 如需支持32位则保留
        └── libgeneraldecryptjni.so
    

    不要将不同ABI的库混放,也不要放在错误的目录下。

  • 优化build.gradle配置
    当前的sourceSets配置没问题,可以补充ABI过滤,减少包体积同时避免加载错误ABI的库:

    android {
        defaultConfig {
            ndk {
                abiFilters 'arm64-v8a' // 只保留你需要的ABI
            }
        }
        sourceSets.main {
            jniLibs.srcDir 'src/main/libs'
            jni.srcDirs = [] // 禁用自动ndk-build
        }
    }
    

内容的提问来源于stack exchange,提问作者Cube

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 09:27:36