530

I tried to install my app into Android L Preview Intel Atom Virtual Device, it failed with error:

INSTALL_FAILED_NO_MATCHING_ABIS

What does it mean?

4

26 回答 26

692

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

于 2014-07-04T10:26:48.483 回答
154

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

在 Visual Studio 2015 上使用 Xamarin。 通过以下方式解决此问题:

  1. 打开你的 xamarin .sln
  2. 右键单击您的android项目
  3. 点击属性
  4. 点击安卓选项
  5. 单击“高级”选项卡
  6. 在“支持的架构”下进行以下检查:

    1. armeabi-v7a
    2. x86
  7. 节省

  8. F5(构建)

编辑:据报道,此解决方案也适用于Visual Studio 2017

编辑 2:据报道,此解决方案也适用于Visual Studio 2017 for Mac

于 2017-01-31T22:59:59.703 回答
94

我正在从另一个线程发布答案,因为它对我来说效果很好,诀窍是添加对两种架构的支持:

发布这个是因为我找不到直接的答案,不得不查看几个不同的帖子才能完成我想做的事情......

只需将其添加到我的模块的 build.gradle 脚本里面 android{} 块,我就可以使用 x86 加速 (HAXM) 模拟器:

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

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

adb install (yourapp)-x86-debug.apk
于 2015-11-17T16:05:33.393 回答
61

If you using Genymotion you need Installing ARM Translation and GApps

于 2014-11-20T07:18:19.917 回答
45

这确实是一个奇怪的错误,它可能是由对您的应用程序进行多索引处理引起的。要绕过它,请在应用程序的build.gradle文件中使用以下块:

android {
  splits {
    abi {
        enable true
        reset()
        include 'x86', 'armeabi-v7a'
        universalApk true
    }
  }
  ...[rest of your gradle script]
于 2016-03-31T16:24:49.810 回答
19

在安卓 8 上:

apache.commons.io:2.4

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

于 2018-09-14T17:14:46.157 回答
13

这个解决方案对我有用。试试这个,在应用程序的build.gradle文件中添加以下行

splits {
    abi {
        enable true
        reset()
        include 'x86', 'armeabi-v7a'
        universalApk true
    }
}
于 2017-09-15T06:14:26.110 回答
12

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

  1. 右键单击解决方案树中的 Android 项目
  2. 选择Options
  3. Android Build
  4. 转到Advanced选项卡
  5. 检查您在模拟器中使用的架构(可能x86// armeabi-v7aarmeabi
  6. 制作一个kickass应用程序:)
于 2016-09-07T06:16:58.240 回答
10

我使用bitcoinJ库(org.bitcoinj:bitcoinj-core:0.14.7)添加到build.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'
    }
}
于 2018-11-26T21:22:17.277 回答
9

这对我有用... Android > Gradle Scripts > build.gradle (Module:app) add inside android*

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

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

在此处输入图像描述

于 2018-08-14T22:31:47.817 回答
7

@enl8enmentnow 的评论应该是使用 genymotion 解决问题的答案:

如果即使在使用 ARM 转换器时您在 Genymotion 上也遇到此问题,那是因为您正在创建一个 x86 虚拟设备,例如 Google Nexus 10。请选择一个 ARM 虚拟设备,例如自定义平板电脑之一。

于 2015-06-15T09:23:07.907 回答
6

Visual Studio mac - 您可以在此处更改支持:

在此处输入图像描述

于 2017-06-21T20:46:07.907 回答
4

这个问题是针对CPU 架构abi的,你在lib文件夹中有一些。

build.gradle你的app module和输入android,块添加这个:

  splits {
            abi {
                enable true
                reset()
                include 'x86', 'armeabi-v7a'
                universalApk true
            }
        }
于 2020-12-21T16:04:38.323 回答
3

就我而言,在 xamarin 项目中,通过选择属性-> Android 选项删除了 Visual Studio 错误并选中使用共享运行时间和使用快速部署,在某些情况下是其中之一 在此处输入图像描述

于 2018-10-27T00:29:47.763 回答
3

在 Visual Studio 社区版 2017 中,有时从 Android 选项中选择支持的 ABI 不起作用。

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

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

为了编辑,

  1. 卸载您的 Android 项目
  2. 右键单击并选择编辑项目...
  3. 确保在构建配置中只有一次以上行
  4. 节省
  5. 右键单击您的android项目并重新加载
于 2018-03-22T05:58:06.460 回答
3

就我而言(Windows 10、Flutter、Android Studio),我只是在 Android Studio 中创建了一个新的模拟器设备。这一次,我选择了 x86_64 ABI 而不仅仅是 x86。它解决了我的问题。我的模拟器设备显示在下面的屏幕截图中。 新旧仿真器设备

于 2021-09-27T22:15:44.357 回答
2

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

在我的项目中,没有任何“APP_ABI”,但我相应地添加了它,它只为两种架构构建了一个 apk,但它有效。 https://stackoverflow.com/a/35565901/3241111

于 2016-06-10T20:22:53.680 回答
2

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

  • 在 Android Studio 中构建一个 APK 文件(菜单 Build > Build Bundle(s)/APK(s) > Build APK(s))//实际于 2020 年 4 月 1 日
  • 重命名 APK 文件,将扩展名“apk”替换为扩展名“zip”
  • 将 zip 文件解压缩到新文件夹
  • 转到 libs 文件夹
  • 找出具有不兼容 ABI 的 *.jar 库

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

于 2020-03-13T09:37:17.440 回答
2

基本上,如果您尝试了上述所有内容,但仍然遇到相同的错误“因为我之前也遇到过这个问题”,那么请检查您添加的哪个 .jar 或 .aar 或模块可能是使用 ndk 的一个库,而那个库不支持 8.0 (Oreo)+ ,同样我正在使用 Microsoft SignalR 套接字库添加它的 .jar 文件,后来我发现应用程序没有在 Oreo 中安装,然后我删除了该库,因为目前它的 git 页面上没有解决方案,我去另一个.

因此,如果您急切需要那个库,请检查您正在使用的库并搜索它。

于 2018-11-15T08:27:37.270 回答
1

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

  1. 转到https://www.apkmirror.com/
  2. 搜索应用程序
  3. 选择列表中的第一个
  4. 查看页面顶部,其中有 [Company Name] > [Application Name] > [Version Number]
  5. 单击应用程序名称
  6. 点击“所有变体”
  7. 该列表应包含要下载的 x86 变体
于 2018-12-22T05:09:40.497 回答
1

从 Android 7(Nougat)迁移到 Android 8(Oreo)时,我遇到了这个问题。

我已经尝试了上面列出的几种方法,但不幸的是,没有任何效果。

所以我将.apk文件更改为.zip文件提取它并找到该文件所在的lib文件夹/x86_64/darwin/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'
}

欢呼问题已解决

于 2019-03-22T06:11:05.857 回答
1

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

于 2020-09-15T15:58:21.990 回答
0

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

于 2018-06-18T03:01:45.157 回答
0

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

在此处输入图像描述

于 2019-07-29T12:55:26.983 回答
0

不知何故,这无缘无故地解决了这个问题。

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

于 2020-07-16T07:57:33.047 回答
0

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

于 2018-11-13T01:46:51.000 回答