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 文件。
解决方案:
- 验证设备的 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”如何解决?的详细内容,更多请关注抖狐科技其它相关文章!
-
12 核 AMD 锐龙 AI Max 390 处理器曝光:AI 性能比锐龙 AI 9 HX 370 最多高 10.5%
本站 9 月 21 日消息,科技媒体 notebookcheck 昨日(9 月 20 日)发布博文,报道称 amd 锐龙 ai max 390 处理器现身 geekbench 跑分库,显示共有 12...
-
《创世战车》发布大型内容更新 加入新地图与模式
Gaijin Entertainment近日宣布,后末日在线动作游戏《创世战车》发布“下一步”重大内容更新。装甲车辆和装甲飞行器的驾驶员和设计师们可以使用机甲风格的战斗步行机,这是一种全新类型的装甲战...
-
51单片机怎么计时
51单片机可以通过定时器中断方式和软件循环延时方式实现计时。定时器中断方式精度更高,占用cpu资源较少,适用于需要较高精度和低cpu占用率的计时任务。软件循环延时方式实现简单,无需硬件支持,适用于延时...
-
中国移动怎么更换便宜的套餐
中国移动更换便宜套餐的方法有四种:1. 网上办理(官网或 app);2. 线下办理(营业厅);3. 拨打客服热线;4. 套餐选择建议:考虑使用需求、套餐内容和价格。中国移动如何更换便宜套餐 更换中国移...
-
黑神话悟空博山炉怎么获得 博山炉获取方法
《黑神话:悟空》中的博山炉,是一种珍贵道具,饮用葫芦后能获得伤害减免效果。想要获取博山炉,需要经历一系列挑战:前往黄风岭,获得飞龙鳞片。击败赤髯龙,打开箱子即可获得博山炉。更多精彩游戏内容,尽在php...