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

Android Native库加载失败求助:Gradle配置及.so文件路径问题

无法加载Native库的解决思路

1. 修正sourceSets配置

你之前找到的配置存在路径错误(你的libs目录与build.gradle同级,而非/src/main/libs)和语法问题(Groovy赋值需使用=)。修改后的配置如下:

android {
    // 保留原有其他配置...
    sourceSets {
        main {
            jni.srcDirs = [] // 禁用自动JNI编译逻辑
            jniLibs.srcDirs = "$projectDir/libs" // 指定预编译so文件的目录
        }
    }
}

2. 移除冲突的CMake编译配置

你的build.gradle中配置了externalNativeBuild通过CMake编译JNI目标,但你实际使用的是预编译的.so文件,二者会产生冲突。若不需要编译JNI代码,直接移除以下配置块:

// 移除defaultConfig内的externalNativeBuild
// defaultConfig {
//     // ...其他配置
//     externalNativeBuild {
//         cmake {
//             targets += "MyLibs1_jni"
//             targets += "MyLibs2_jni"
//             targets += "MyLibs3_jni"
//         }
//     }
// }

// 移除根节点的externalNativeBuild
// externalNativeBuild {
//     cmake {
//         path = project.file("cmakelists/gradle/CMakeLists.txt")
//         version = "3.19.0+"
//     }
// }

3. 检查.so文件的目录结构

确保libs目录下按ABI架构分类存放so文件,正确结构示例:

libs/
├── arm64-v8a/
│   ├── libMyLibs1_jni.so
│   ├── libMyLibs2_jni.so
│   └── libMyLibs3_jni.so
└── armeabi-v7a/
    ├── libMyLibs1_jni.so
    ├── libMyLibs2_jni.so
    └── libMyLibs3_jni.so

未按ABI分类的so文件,Gradle无法正确识别并打包到对应架构的安装包中。

4. 确认加载库的代码正确性

加载Native库时需去掉lib前缀和.so后缀,示例代码:

// 正确写法
System.loadLibrary("MyLibs1_jni")
// 错误写法:不要添加lib前缀或.so后缀
// System.loadLibrary("libMyLibs1_jni.so")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 10:10:24