安装apk时INSTALL_FAILED_NO_MATCHING_ABIS
我试图安装我的应用程序到Android L预览英特尔Atom虚拟设备,它失败,错误:
INSTALL_FAILED_NO_MATCHING_ABIS
这是什么意思?
INSTALL_FAILED_NO_MATCHING_ABIS
是当您尝试安装具有本机库的应用程序时,并且它没有用于您的cpu体系结构的本机库。 例如,如果您为armv7编译了一个应用程序,并试图将其安装在使用Intel体系结构的模拟器上,则无法工作。
如果您使用Genymotion,则需要安装ARM翻译和GApps
我发布了来自另一个线程的答案,因为这对我来说很合适,诀窍是添加对这两种体系结构的支持:
发布这个,因为我找不到直接的答案,不得不看几个不同的职位,以得到我想做的事情…
我能够使用x86加速(HAXM)模拟器,只需将其添加到我的模块的build.gradle脚本里面android {}块:
splits { abi { enable true reset() include 'x86', 'armeabi-v7a' universalApk true } }
运行(build)…现在在你的输出文件夹中会有一个(yourapp)-x86-debug.apk。 我确定有一种方法可以在运行时自动安装,但是我只需启动我的首选HAXM模拟器并使用命令行:
adb install (yourapp)-x86-debug.apk
INSTALL_FAILED_NO_MATCHING_ABIS是当您尝试安装具有本机库的应用程序时,并且它没有用于您的cpu体系结构的本机库。 例如,如果您为armv7编译了一个应用程序,并试图将其安装在使用Intel体系结构的模拟器上,则无法工作。
在Visual Studio 2015上使用Xamarin。通过以下方法解决此问题:
- 打开你的xamarin .sln
- 右键单击您的Android项目
- 点击属性
- 点击Android选项
- 点击“高级”标签
-
在“支持的体系结构”下,选中以下选项:
- armeabi-V7A
- 86
-
保存
- F5(build)
编辑:这个解决scheme也被报告为Visual Studio 2017的工作。
这实际上是一个奇怪的错误,可以通过多重索引您的应用程序。 为了解决这个问题,在应用程序的build.gradle文件中使用下面的代码块:
android { splits { abi { enable true reset() include 'x86', 'armeabi-v7a' universalApk true } } ...[rest of your gradle script]
我知道这里有很多答案,但TL; DR版本是这样的(如果你使用的是Xamarin Studio):
- 在解决scheme树中右键单击Android项目
- select
Options
- 转到
Android Build
- 转到
Advanced
选项卡 - 检查您在模拟器中使用的体系结构(可能是
x86
/armeabi-v7a
/armeabi
) - 做一个kickass应用程序:)
@ enl8enmentnow的评论应该是使用genymotion解决问题的答案:
如果您在使用ARM翻译程序时遇到了Genymotion问题,那是因为您正在创build一个x86虚拟设备(如Google Nexus 10),而不是像自定义平板电脑之一那样selectARM虚拟设备。
INSTALL_FAILED_NO_MATCHING_ABIS表示架构不匹配。 如果您在Mac上使用Android Studio(通常使用Apple的ARM),则需要将Android虚拟设备CPU / ABI设置为“arm”或“armeabi-v7a”。 但是,如果您在个人电脑(通常使用英特尔芯片)上使用Android Studio,请将其设置为'x86'或'x86_64'。
Visual Studio的mac – 你可以在这里改变支持:
对于mac上的genymotion,我在安装apk时遇到了INSTALL_FAILED_NO_MATCHING_ABIS错误。
在我的项目中没有任何“APP_ABI”,但是我相应地添加了它,它为这两种体系结构都构build了一个apk,但是它工作正常。 https://stackoverflow.com/a/35565901/3241111
这个解决scheme为我工作尝试这个,在你的应用程序build.gradle文件中添加以下行
splits { abi { enable true reset() include 'x86', 'armeabi-v7a' universalApk true } }