安装apk时INSTALL_FAILED_NO_MATCHING_ABIS

我试图将我的应用程序安装到Android L预览英特尔Atom虚拟设备,它失败了,错误:

INSTALL_FAILED_NO_MATCHING_ABIS

这是什么意思?

573711 次浏览

INSTALL_FAILED_NO_MATCHING_ABIS是当你试图安装一个有原生库的应用程序,而它没有适合你的cpu架构的原生库时。例如,如果你为v7编译了一个应用程序,并试图将它安装在使用英特尔架构的模拟器上,它将无法工作。

如果你使用Genymotion,你需要安装ARM翻译和GApps

@enl8enmentnow的注释应该是使用genymotion修复问题的答案:

如果你在Genymotion上遇到这个问题,即使是在使用ARM转换器,那是因为你正在创建一个像谷歌Nexus 10这样的x86虚拟设备。选择一个ARM虚拟设备,比如自定义平板电脑。

我从另一个帖子中发布了一个答案,因为它对我来说很有效,诀窍是添加对两种架构的支持:

发布这篇文章是因为我找不到一个直接的答案,不得不看看几个不同的帖子来得到我想要的东西……

我能够使用x86加速(HAXM)模拟器,只需将其添加到我的模块构建中。gradle脚本在android{}块内:

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

运行(构建)…现在在你的输出文件夹中会有一个(yourapp)-x86-debug.apk。我确信有一种方法可以在运行时自动安装,但我只是启动我首选的HAXM模拟器并使用命令行:

adb install (yourapp)-x86-debug.apk

这确实是一个奇怪的错误,可能是由应用程序的多索引引起的。为了解决这个问题,在应用程序的build.gradle文件中使用以下块:

android {
splits {
abi {
enable true
reset()
include 'x86', 'armeabi-v7a'
universalApk true
}
}
...[rest of your gradle script]

对于mac上的genymotion,我在安装apk时得到INSTALL_FAILED_NO_MATCHING_ABIS错误。

在我的项目中没有任何“APP_ABI”,但我相应地添加了它,它只为两个架构构建了一个apk,但它工作了。 # EYZ0 < / p >

我知道这里有很多答案,但是TL;DR版本是这样的(如果你使用Xamarin Studio):

  1. 在解决方案树中右键单击Android项目
  2. 选择# EYZ0
  3. 转到Android Build
  4. 转到Advanced标签
  5. 检查您在模拟器中使用的架构(可能是x86 / armeabi-v7a / armeabi)
  6. 制作一款出色的应用吧!

INSTALL_FAILED_NO_MATCHING_ABIS是当你试图安装一个有本机库的应用程序,而它没有适合你的cpu架构的本机库时。例如,如果你为armv7编译了一个应用程序,并试图将其安装在使用英特尔架构的模拟器上,它将无法工作。

在Visual Studio 2015上使用Xamarin。 修复此问题:

  1. 打开你的xamarin .sln
  2. 右击你的android项目
  3. 单击“属性”
  4. 点击Android选项
  5. 点击“高级”选项卡
  6. 在“支持的架构”下勾选以下内容:

    1. armeabi-v7a
    2. x86
    3. 李< / ol > < / >
    4. 保存

    5. F5(建立)

    据报道,这个解决方案也适用于Visual Studio 2017

    据报道,这个解决方案也适用于Visual Studio 2017 for Mac

Visual Studio mac -你可以在这里更改支持:

enter image description here

这个解决办法对我很有效。试试这个, 在应用的build.gradle文件

中添加以下行
splits {
abi {
enable true
reset()
include 'x86', 'armeabi-v7a'
universalApk true
}
}

在visual studio社区版2017中,有时从Android选项中选择受支持的ABIs将不起作用。

在这种情况下,请验证.csproj有以下行,并且在相同的构建配置中没有重复的行。

 <AndroidSupportedAbis>armeabi;armeabi-v7a;x86;x86_64;arm64-v8a</AndroidSupportedAbis>

为了编辑,

  1. 卸载你的Android项目
  2. 右键单击并选择编辑项目…
  3. 确保在构建配置中只出现一次上面的行
  4. 保存
  5. 右键单击你的android项目并重新加载

这发生在我身上。我检查了SDK管理器,它告诉我我正在使用的有更新。我更新了它,问题就消失了。

这对我有用…Android > Gradle脚本>构建。gradle(模块:应用) 添加在android*

android {
//   compileSdkVersion 27
defaultConfig {
//
}
buildTypes {
//
}
// buildToolsVersion '27.0.3'


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

enter image description here

Android 8:

apache.commons.io: 2.4

给出INSTALL_FAILED_NO_MATCHING_ABIS,尝试将其更改为implementation 'commons-io:commons-io:2.6',它将工作。

在我的情况下,在xamarin项目中,在visual studio错误通过选择属性—> Android选项并检查使用共享运行时间和使用快速部署,在某些情况下,其中一个是enter image description here

很晚了,但刚碰到这个。这是为Xamarin.Android。确保您没有尝试在发布模式下进行调试。如果处于发布模式并试图调试,我会得到完全相同的错误。简单地从发布切换到调试就可以让我的软件正确安装。

基本上如果你尝试一切,你仍然有同样的错误”,因为我面临这个问题之前太“然后检查. jar或. aar或模块添加使用ndk可能是一个库,这一个是不支持8.0(奥利奥)+,同样我使用微软SignalR插座库添加它的. jar文件和最近我发现应用程序没有安装在奥利奥后来我删除库,因为目前没有解决方案在git页面,我去另一个。

因此,如果你迫切需要,请检查你正在使用的图书馆并搜索它。

我有这个问题使用bitcoinJ库(org.bitcoinj: bitcoinJ -core:0.14.7) 添加到构建。Gradle(在模块应用程序中)在android范围内打包选项。 它帮助了我

android {
...
packagingOptions {
exclude 'lib/x86_64/darwin/libscrypt.dylib'
exclude 'lib/x86_64/freebsd/libscrypt.so'
exclude 'lib/x86_64/linux/libscrypt.so'
}
}

就我而言,我需要下载x86版本的应用程序。

  1. 转到https://www.apkmirror.com/
  2. 搜索应用程序
  3. 选择列表中的第一个
  4. 查看页面顶部,有[公司名称]>[应用程序名称]>[版本号]
  5. 单击应用程序名称
  6. 点击“所有变体”
  7. 该列表应该包含一个可供下载的x86变体

当我从Android 7(牛轧糖)转移到Android 8(奥利奥)时,我遇到了这个问题。

我尝试了上面列出的几种方法,但不幸的是,这些方法都不起作用。

所以我把。apk文件改为。zip文件提取出来,找到了自由文件夹,这个文件在/ x86_64 / / libscrypt.dylib达尔文所以要删除这个,我在我的build.gradle模块下面的android部分(即)添加了一个代码。

packagingOptions {
exclude 'lib/x86_64/darwin/libscrypt.dylib'
exclude 'lib/x86_64/freebsd/libscrypt.so'
exclude 'lib/x86_64/linux/libscrypt.so'
}

欢呼声问题解决

在我的情况下,设置以下选项帮助我

enter image description here

一般情况下,要找出哪个库依赖具有不兼容的ABI,

  • 在Android Studio中构建APK文件(菜单build > build Bundle(s)/APK(s) > build APK(s)) // actual于01.04.2020
  • 重命名APK文件,将扩展名“APK”替换为“zip”
  • 解压缩文件到一个新文件夹
  • 进入libs文件夹
  • 找出带有不兼容的abi的*.jar库

您可以尝试升级版本/删除/替换这些库来解决安装apk时INSTALL_FAILED_NO_MATCHING_ABIS问题

不知何故,这毫无理由地解决了问题。

./gradlew clean assemble,然后安装应用。

以防万一,这可能会帮助到像我这样的人。 我在Unity 3D中也遇到了同样的问题。我试图使用Android Studio中的模拟器。 所以我在播放器设置中启用了Target Architecture->x86 Architecture(虽然已弃用),它起作用了!< / p >

这个问题是针对CPU体系结构,你有一些abilib文件夹。

转到build.gradleapp module和在android块添加这个:

  splits {
abi {
enable true
reset()
include 'x86', 'armeabi-v7a'
universalApk true
}
}
在我的情况下(Windows 10, Flutter, Android Studio),我只是在Android Studio中创建了一个新的模拟器设备。这一次,我选择了x86_64 ABI而不是x86。这解决了我的问题。 我的模拟器设备如下面的截图所示。 # EYZ0 < / p >

嗨,如果你正在使用这个库;

implementation 'org.apache.directory.studio:org.apache.commons.io:2.4'

替换为:

implementation 'commons-io:commons-io:2.6'

问题会得到解决。