
android studio 构建时出现 “so is not an abi” 错误的解决办法
在 android studio 中使用 java 调用 so 库文件时,可能会遇到编译错误:”execution failed for task ‘:app:mergedebugnativelibs’,out extracted from path…is not an abi”。
此错误通常由以下原因引起:
so 文件与设备的 abi 不一致:设备的 abi 和 so 文件的 abi 必须匹配。例如,如果设备是 arm64 架构,则 so 文件也必须是 arm64 架构。gradle 配置问题:gradle 必须正确配置,以从正确的目录查找 so 文件。
解决方案:
X Studio
网易云音乐·X Studio
91 查看详情
验证设备的 abi:使用 adb shell getprop ro.product.cpu.abi 命令获取设备的 abi。检查 so 文件的 abi:使用 file 命令获取 so 文件的 abi。例如:file libhello.so。配置 gradle:在 app/build.gradle 文件中,设置 jnilibs.srcdirs 值。例如:
android { ... externalNativeBuild { ... ndkBuild { ... path "src/main/jniLibs/${abiName()}" } }}
其中,abiname() 方法返回设备的 abi。
其他注意事项:
编译 so 文件时,请使用 ndk 中的 c 编译器。将所依赖的标准库(例如 libc _shared.so)复制到与 so 文件相同的目录。确保 so 文件的名称以 lib 开头,例如 libhello.so。
以上就是Android Studio构建时报错“so is not an ABI”如何解决?的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/373218.html
微信扫一扫
支付宝扫一扫