安装APK时INSTALL_FAILED_NO_MATCHING_ABIS


Answers:


633

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


1
@DanielOchoa这是因为他们不会为预览版保留两个图像。当L正式启动时,我确定也会有Intel x86映像。
Hiemanshu Sharma 2014年

1
如何克服这个问题。我正在使用Genymotion仿真器并安装间隙,Genymotion-ARM-Translation_v1.1仍然遇到此问题。
Prashant Maheshwari Andro

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

1
知道为什么这在运行5.1.1的Nexus 9上不起作用。在运行4.4.2的Sony Xperia Z2平板电脑上,它可以正常工作。编译后为Sdk 21,目标时间为ABD 17,最低为22。–

3
在Windows计算机上将Android Studio模拟器用于Nexus 5x时遇到了这个问题。出于速度方面的考虑[速度提高10倍],默认设置是模拟手机,就好像它在使用Intel x86架构一样[Nexus 5x的Snapdragon 808实际上基于ARM:tomshardware.com/reviews/lg-g4,4353-2.html ] 。我修复了进入AVD管理器的错误,选择出现错误的模拟设备,然后单击“编辑”按钮,在其中设置了ARM(armeabi-v7a)体系结构。进行此更改并重新启动模拟器后,安装顺利进行
Antonino '18

150

INSTALL_FAILED_NO_MATCHING_ABIS是当您尝试安装具有本机库且没有适用于您的cpu体系结构的本机库的应用程序时。例如,如果您为armv7编译了一个应用程序,并试图将其安装在使用Intel架构的仿真器上,则它将无法正常工作。

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

  1. 打开您的xamarin .sln
  2. 右键单击您的android项目
  3. 点击属性
  4. 点击Android选项
  5. 点击“高级”标签
  6. 在“支持的体系结构”下,进行以下检查:

    1. armeabi-v7a
    2. x86
  7. F5(内部版本)

编辑:据报道该解决方案也可以在Visual Studio 2017上使用

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


6
该解决方案也适用于Xamarin.Android项目的Visual Studio 2017。
corentinaltepe

1
当使用Android WebView App项目时,这也对我
有用

4
似乎在Xamarin上,每一天都有一个新的意外堆,阻止我运行我的应用程序(昨天运行)。由于我的csproj文件位于保管箱上,因此我可以检查版本历史记录,并且该属性昨天不在文件中,因此完全丢失了。今天,我不得不添加x86选项以使应用程序运行。为什么Xamarin或android突然使用不同的默认值?真令人沮丧!无论如何,多亏了像您这样的人,我才能克服并继续工作。非常感谢,为您+1!
TMan

2
希望我能投票一次以上...测试并在Mac上使用VS 2017。
JordiVilaplana '18

对于适用于Mac的Visual Studio Community 2019:1.右键单击您的android项目2.单击选项3.单击Android Build 4. Advanced
null

87

我正在从另一个线程发布答案,因为这对我来说很有效,诀窍是增加对两种体系结构的支持:

发布此帖子是因为我找不到直接的答案,不得不查看几个不同的帖子才能完成我想要的工作...

我可以通过将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

2
失败[INSTALL_FAILED_NO_MATCHING_ABIS]
abbasalim

不适用于我,并且(yourapp)-x86-debug.apk在我的项目输出中找不到文件。
Eido95 '17

我不一定要拆分APK,这是一个选择吗?@DrissBounouar
ericn

您可以使用通用apk,大概它具有两种体系结构。
Driss Bounouar

仍然面临着同样的问题
Vikash Parajuli


37

这确实是一个奇怪的错误,可能是由您的应用程序多义化引起的。要解决此问题,请在应用程序的build.gradle文件中使用以下代码块:

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

1
你好 这使我的项目构建成功,但仍然给了我同样的错误。我正在开发Mac,genymotion。另外,通常来说,您告诉您的此设置仅用于调试版本还是用于发行版本?
myDoggyWritesCode

@ user3241111这可用于调试和生产。您是否尝试过清理项目。还是使Android Studio无效/重启?
IgorGanapolsky '16

1
@ user3241111如果您使用gradlew进行命令行终端构建,则仍可以使用gradle清理项目。
IgorGanapolsky

1
我尝试了此解决方案,它起作用了。在我的项目中,没有任何APP_ABI。但是我相应地添加了它,它只构建了一个apk,并且可以正常工作。stackoverflow.com/a/35565901/3241111
myDoggyWritesCode

1
另外,我刚刚添加了启用的gradle守护程序,它加快了整个过程的速度...
总之

11

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

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

11

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

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

11

在Android 8上:

apache.commons.io:2.4

它提供INSTALL_FAILED_NO_MATCHING_ABIS,尝试将其更改为2.5或2.6,它将起作用或将其注释掉。


6
非常感谢,您救了我的一天。我不知道为什么我有:实行“org.apache.directory.studio:org.apache.commons.io:2.4”
皮埃里克HYMBERT

7

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

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


1
我在Mac上工作,可能是为x86虚拟设备构建的。我也尝试了genymotion自定义平板电脑,它不起作用,并且在安装时出现了相同的错误
myDoggyWritesCode

7

这对我有用... Android> Gradle脚本> 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
               }
    }
 }

在此处输入图片说明



6

我使用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'
    }
}

谢谢。它帮助我实现了比特币J集成。
Umer Kiani

非常感谢您,我尝试了许多解决方案,但该解决方案对我有用我的问题是scrypt-1.4.0.jar未安装在android Pie版本(诺基亚7.1)中
Sagar Pithiya

3

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



2

在Visual Studio Community Edition 2017中,有时无法从Android Options中选择Supported ABI。

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

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

为了进行编辑,

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

1

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

因此,请检查您正在使用的库并在急切需要的情况下进行搜索。


1

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

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

所以我将.apk文件更改为.zip文件,将其解压缩,并找到存在该文件的lib文件夹/x86_64/darwin/libscrypt.dylib,因此要删除此文件,我在android节下面的build.gradle模块中添加了代码(即)

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

干杯问题解决了


1

通常,要找出哪个库依赖项具有不兼容的ABI,

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

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


0

这发生在我身上。我检查了SDK Manager,它告诉我我正在使用的软件进行了更新。我更新了它,问题消失了。


0

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


0

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.