执行adb install命令安装软件到Genymotion模拟器时报错,提示Failure [INSTALL_FAILED_NO_MATCHING_ABIS]
使用adb命令远程在Genymotion上安装apk软件时,执行命令报错,如下
C:\WINDOWS\system32>adb install C:\Users\lly\Downloads\Wandoujia.apk
Performing Push Install
C:\Users\lly\Downloads\Wandoujia.apk: 1 file pushed. 50.7 MB/s (14476557 bytes in 0.272s)
pkg: /data/local/tmp/Wandoujia.apk
Failure [INSTALL_FAILED_NO_MATCHING_ABIS]
查看了一下资料,原因如下:
由于安装的APP中使用了与当前CPU架构不一致的native libraries,所以导致报错,因为现在绝大多数的智能手机还都是采用ARM架构的,虽然android是支持ARM和x86架构,但是它们的指令集是有差别的,APP在开发的时候使用的是ARM的本地库,而我们在用AVD创建模拟器的时候使用的是x86的CPU,因此导致报错。所以,如果APP是在x86架构下编译的我们就创建x86cpu的模拟器,如果APP是在ARM架构编译的我们就创建ARMcpu的模拟器。
解决办法:
解决问题可以分为两个方法:
方法一、让genymotion模拟器支持arm架构。
既然创建的是x86模拟器,那么需要使用转换包使其能够支持arm。
下载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://blog.csdn.net/Leafage_M/java/article/details/86675699
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统