Android Studio模拟器安装APK报INSTALL_FAILED_NO_MATCHING_ABIS错误
问题现象
在Android Studio中创建型号为Nexus 5X、系统版本为API 27的虚拟设备,尝试安装.apk文件时,Android Studio事件日志抛出如下错误:
Error: INSTALL_FAILED_NO_MATCHING_ABIS: Failed to extract native libraries, res=-113
对应错误日志截图:
错误原因
该报错本质是设备CPU架构与APK内置原生库的ABI架构不匹配。默认配置创建的Nexus 5X API 27虚拟设备采用x86/x86_64架构系统镜像,若待安装APK仅打包了armeabi-v7a、arm64-v8a等ARM架构的so原生库,系统安装阶段无法提取对应架构的原生库文件,就会触发该错误。
有效解决方法
- 方案1:更换匹配架构的运行环境 适合安装第三方无源码APK的场景,稳定性最高
重新创建虚拟设备时,选择ARM架构的API 27系统镜像;也可以直接使用实体安卓手机连接Android Studio安装调试,天然匹配绝大多数APK的架构支持要求。注意ARM架构模拟器运行流畅度远低于x86架构模拟器,对性能敏感的场景优先选真机。 - 方案2:修改构建配置补充x86架构支持 适合自行开发的项目,运行体验最好
打开对应模块的build.gradle配置文件,在defaultConfig域的ndk配置中增加x86、x86_64架构的ABI过滤规则,参考配置如下:
配置完成后执行全量重新构建,新生成的APK即可正常在原有x86架构的Nexus 5X模拟器上安装运行。android { defaultConfig { ndk { // 同时兼容ARM和x86架构设备/模拟器 abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64' } } } - 方案3:开启原生桥接兼容 临时调试用,稳定性最差
启动现有x86架构模拟器,进入模拟器的开发者选项页面,开启启用原生调试桥接(部分版本显示为Native bridge support),系统会自动加载libhoudini转译层,将ARM指令动态转译为x86指令运行。该方案可能出现原生库加载失败、运行闪退、性能卡顿等问题,仅适合临时快速验证场景,不建议用于正式功能测试。
内容的提问来源于stack exchange,提问作者Lucas Jeong
相关产品推荐
相关产品推荐

