【问题标题】:INSTALL_FAILED_NO_MATCHING_ABIS when install apk安装 apk 时的 INSTALL_FAILED_NO_MATCHING_ABIS
【发布时间】:2014-08-25 15:51:13
【问题描述】:

我尝试将我的应用安装到 Android L Preview Intel Atom 虚拟设备中,但失败并出现错误:

INSTALL_FAILED_NO_MATCHING_ABIS

什么意思?

【问题讨论】:

标签: android apk adb intel virtual-device-manager


【解决方案1】:

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

【讨论】:

  • @DanielOchoa 这是因为他们不会为预览版本维护两个图像。当 L 正式推出时,我相信也会有 Intel x86 映像。
  • 如何克服这个问题。我正在使用 Genymotion 仿真器并安装 gapps 和 Genymotion-ARM-Translation_v1.1 仍然遇到这个问题。
  • 如果您在 Genymotion 上遇到此问题,即使使用 ARM 翻译器也是因为您正在创建一个 x86 虚拟设备,例如 Google Nexus 10。请选择一个 ARM 虚拟设备,例如自定义平板电脑之一.
  • 知道为什么这在运行 5.1.1 的 Nexus 9 上不起作用。它在运行 4.4.2 的 Sony Xperia Z2 平板电脑上运行良好。编译 Sdk 21,最少 17 abd 目标 22。
  • 我在我的 Windows 机器上为 Nexus 5x 使用 Android Studio 模拟器时遇到了这个问题。出于速度原因 [快 10 倍],默认设置是模拟手机,就好像它正在使用 Intel x86 架构 [Nexus 5x 的 Snapdragon 808 实际上基于 ARM:tomshardware.com/reviews/lg-g4,4353-2.html]。我修复了进入 AVD 管理器的错误,选择了给我错误的模拟设备,然后单击设置 ARM (armeabi-v7a) 架构的编辑按钮。在此更改加上模拟器重新启动后,安装顺利完成
【解决方案2】:

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
  7. 保存

  8. F5(构建)

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

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

【讨论】:

  • 该解决方案也适用于 Visual Studio 2017,用于 Xamarin.Android 项目。
  • 这在使用 Android WebView App 项目时也对我有用
  • 似乎在 Xamarin 上,每个新的一天都有一个新的、意想不到的障碍阻止我运行我的应用程序(昨天工作)。由于我的 csproj 文件在 Dropbox 上,我可以检查版本历史记录,而昨天的文件中没有这个属性,它完全丢失了。今天,我必须添加 x86 选项才能使应用程序运行。为什么 xamarin 或 android 突然使用不同的默认值?这太令人沮丧了!不管怎样,多亏有你们这样的人,我才能克服困难,继续工作。非常感谢,为你 +1!
  • 希望我能多次投票...经过测试并在 VS 2017 for Mac 上工作。
  • 对于 Visual Studio Community 2019 for Mac: 1. 右键单击​​您的 android 项目 2. 单击选项 3. 单击 Android Build 4. 高级
【解决方案3】:

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

发布这个是因为我找不到直接的答案,不得不查看几个不同的帖子才能得到我想要的结果......

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

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

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

adb install (yourapp)-x86-debug.apk

【讨论】:

  • 失败 [INSTALL_FAILED_NO_MATCHING_ABIS]
  • 对我不起作用,在我的项目输出中找不到 (yourapp)-x86-debug.apk 文件。
  • 我不一定要拆分 APK,可以选择吗? @DrissBounouar
  • 可以用通用的apk,想必两种架构都有。
  • 仍然面临同样的问题
【解决方案4】:

如果你使用 Genymotion,你需要Installing ARM Translation and GApps

【讨论】:

  • 在您使用的一些API中,您需要同时添加“ARM Translation Installer v1.1”和“GApps for your Android version”。
  • 2017 年 5 月 28 日更新:本指南不再受支持并且可能不起作用。请不要再使用它或寻求支持。来自 xda-developers
  • 可以关注this link安装ARM翻译
【解决方案5】:

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

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

【讨论】:

  • 嗨。这使我的项目成功构建,但仍然给了我同样的错误。我正在研究mac,genymotion。另外,一般来说,您所说的这些设置是仅适用于调试版本还是也适用于发布版本?
  • @user3241111 这可用于调试和生产。您是否尝试过清理您的项目。或者可能使 Android Studio 无效/重新启动?
  • @user3241111 如果您使用 gradlew 进行命令行终端构建,那么您仍然可以使用 gradle 清理您的项目。
  • 我尝试了这个解决方案,它有效.. 在我的项目中没有任何 APP_ABI。但是我相应地添加了它,它只构建了一个 apk 并且它可以工作。 stackoverflow.com/a/35565901/3241111
  • 另外,我刚刚添加了启用的 gradle 守护进程,它大大加快了进程的速度......无论如何,感谢您的支持 :)
【解决方案6】:

在 Android 8 上:

apache.commons.io:2.4

给出 INSTALL_FAILED_NO_MATCHING_ABIS,尝试将其更改为 implementation 'commons-io:commons-io:2.6' 即可。

【讨论】:

  • 非常感谢,你拯救了我的一天。我不知道为什么我得到了: implementation 'org.apache.directory.studio:org.apache.commons.io:2.4'
【解决方案7】:

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

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

【讨论】:

    【解决方案8】:

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

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

    【讨论】:

      【解决方案9】:

      我在使用 bitcoinJ 库时遇到了这个问题 (org.bitcoinj:bitcoinj-core:0.14.7) 添加到 build.gradle(in module app) android 范围内的打包选项。 它帮助了我。

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

      【讨论】:

      • 谢谢。它在 Bitcoin J 集成方面帮助了我。
      • 非常感谢,我尝试了很多解决方案,但这个解决方案对我有用 我的问题是 scrypt-1.4.0.jar 未安装在 android Pie 版本(诺基亚 7.1)设备中
      【解决方案10】:

      这对我有用... Android > Gradle Scripts > build.gradle (Module:app) 在 android* 内部添加

      android {
        //   compileSdkVersion 27
           defaultConfig {
              //
           }
           buildTypes {
              //
           }
          // buildToolsVersion '27.0.3'
      
          splits {
                 abi {
                       enable true
                       reset()
                       include 'x86', 'armeabi-v7a'
                       universalApk true
                     }
          }
       }
      

      【讨论】:

        【解决方案11】:

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

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

        【讨论】:

        • 我正在使用 mac,它可能是为 x86 虚拟设备构建的。我也尝试使用 genymotion 自定义平板电脑,但它不起作用,并且在安装时出现同样的错误
        【解决方案12】:

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

        【讨论】:

          【解决方案13】:

          此问题与 CPU 架构 有关,并且您在 lib 文件夹中有一些 abi

          转到build.gradle 获取您的app module 并在android 中添加以下内容:

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

          【讨论】:

            【解决方案14】:

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

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

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

            为了编辑,

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

            【讨论】:

            • 我认为 2019 年也会发生同样的情况。就像您一样,我必须明确指定所有受支持的 ABI。当它们都在选项菜单中被选中时,.csproj 文件中的属性为空。并且文档说在发布模式下默认目标是armeabi-v7alink
            【解决方案15】:

            在我的情况下,在 xamarin 项目中,通过选择属性删除了 Visual Studio 错误 --> Android 选项并选中使用共享运行时间和使用快速部署,在某些情况下,其中之一是

            【讨论】:

              【解决方案16】:

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

              【讨论】:

              • 从您的图像中我如何获得像素 5 api 31 虚拟设备?我从哪里下载或如何在 android studio 上手动添加?因为我只有 api 级别 30 的像素 5
              • 对我不起作用,似乎是命中或错过的事情。
              【解决方案17】:

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

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

              【讨论】:

                【解决方案18】:

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

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

                【讨论】:

                  【解决方案19】:

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

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

                  【讨论】:

                  • 非常有帮助,+1
                  【解决方案20】:

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

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

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

                  【讨论】:

                    【解决方案21】:

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

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

                    所以我将 .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'
                    }
                    

                    干杯问题解决了

                    【讨论】:

                      【解决方案22】:

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

                      【讨论】:

                        【解决方案23】:

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

                        【讨论】:

                          【解决方案24】:

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

                          【讨论】:

                            【解决方案25】:

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

                            【讨论】:

                              【解决方案26】:

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

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

                              【讨论】:

                                猜你喜欢
                                • 2018-12-20
                                • 2017-01-18
                                • 2012-05-30
                                • 2017-04-02
                                • 2017-08-04
                                • 1970-01-01
                                • 2017-02-25
                                • 2017-05-24
                                相关资源
                                最近更新 更多