android Studio 构建报错 “so is not an ABI”
在使用 android studio 进行应用开发时,调用 SO 库文件可能会遇到 “so is not an ABI” 错误。以下是此问题的常见原因及解决方案:
ABI 不一致
gradle 配置错误
- 检查 gradle 配置中 jniLibs.srcDirs 的设置。此设置指定了 Gradle 查找 SO 库文件的位置。确保目录名称与目标 ABI 一致,例如,x86_64 架构的 SO 库文件应位于 src/main/jniLibs/x86_64 中。
解决方案:
解决 ABI 不一致
- 如果您使用的是手动编译的 SO 库文件,请使用 Android NDK 中的 C 编译器进行编译,以确保生成的 SO 库文件具有正确的 ABI。
- 如果您正在使用预编译的 SO 库文件,请确保其 ABI 与目标设备匹配。
解决 Gradle 配置错误
- 在 jniLibs.srcDirs 中添加与目标 ABI 相对应的目录。
- 删除现有的 SO 库文件并重新运行 Gradle 构建。
其他问题
- 确保您的 SO 库文件没有依赖于您没有在项目中包含的标准库。
- 如果在运行时出现崩溃,请检查 logcat 中是否有找不到依赖库的错误消息。