Failure [INSTALL_FAILED_NO_MATCHING_ABIS: Failed to extract native libraries, res=-113]

原文地址::https://blog.csdn.net/Leafage_M/article/details/86675699

相关文章

1、INSTALL_FAILED_NO_MATCHING_ABIS 安装包安装失败,返回代码res=-113的解决办法 B站弹幕----https://blog.csdn.net/weixin_40845165/article/details/79515245

1.问题由来。
使用AndroidStudio在genymotion模拟器上安装一个app的时候出现了这个错误报告:

刚开始没有仔细看前面的error提示,还以为是之前的数据没有清理干净,于是直接点了OK并且见到了一个之前遇到过的错误提示,


下意识的按照之前的错误进行处理排查。但是没有成效,在把模拟器删除重新创建之后还是出现这个问题,意识到这是一个全新的问题。使用本人的Android真机运行无误,那么问题就是出在了模拟器身上。

2.问题原因。
于是查了查发现:

由于安装的APP中使用了与当前CPU架构不一致的native libraries,所以导致报错,因为现在绝大多数的智能手机还都是采用ARM架构的,虽然android是支持ARM和x86架构,但是它们的指令集是有差别的,APP在开发的时候使用的是ARM的本地库,而我们在用AVD创建模拟器的时候使用的是x86的CPU,因此导致报错。所以,如果APP是在x86架构下编译的我们就创建x86cpu的模拟器,如果APP是在ARM架构编译的我们就创建ARMcpu的模拟器。

问题已经很清楚了,是当前的app使用了native libraries与模拟器的CPU架构不一致所导致的,而genymotion模拟器默认创建的只支持x86架构而不支持arm架构,这样看来这个app使用了支持arm架构的一些库,所以在x86上会无法安装。事实就是源码中使用了.so文件,当一个应用安装在设备上,只有该设备支持的CPU架构对应的.so文件会被安装。所以对应的arm部分文件无法安装从而导致安装失败。

3.解决办法。
那么解决问题可以分为两个方法:

让genymotion模拟器支持arm架构。

既然创建的是x86模拟器,那么需要使用转换包使其能够支持arm。

这里提供网上的一些资源:

链接:https://pan.baidu.com/s/15UpeGLOsaCpWDkmJe-fjjw
提取码:fx4r

本人使用里面提供的ARM_Translation_Marshmallow 完成了转换,使用的是模拟器版本如下:

启动模拟器,把这个zip文件直接拖进模拟器进行安装:

点击OK


安装成功:


然后我们重启一下模拟器再次尝试安装app,重启的时候可能会慢一点。

让该app项目将arm和x86的文件都包含进去。

可以在app的build.gradle中的android{}添加如下内容:

splits {
abi {
enable true
reset()
include ‘x86’, ‘armeabi-v7a’,‘x86_64’
universalApk true
}
}


其中对应的含义如下所示:


以上两种方法均可解决本人所遇到的问题。

参考文章:
https://stackoverflow.com/questions/24572052/install-failed-no-matching-abis-when-install-apk
http://tools.android.com/tech-docs/new-build-system/user-guide/apk-splits (ABI相关知识)
https://www.cnblogs.com/janehlp/p/7473240.html (.so文件相关知识)
https://www.jb51.net/article/99714.htm
————————————————
版权声明:本文为CSDN博主「繁城落叶」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Leafage_M/article/details/86675699

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值