安装apk时INSTALL_FAILED_NO_MATCHING_ABIS

时间:2014-07-04 10:17:32

标签: android

我尝试将我的应用安装到Android L预览版英特尔凌动虚拟设备中,但失败了,错误:

INSTALL_FAILED_NO_MATCHING_ABIS

这是什么意思?

25 个答案:

答案 0 :(得分:576)

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

答案 1 :(得分:146)

  

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

  8. F5(build)
  9. 编辑:据报道,此解决方案也适用于Visual Studio 2017。

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

答案 2 :(得分:82)

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

发布此信息是因为我无法找到直接答案,不得不查看几个不同的帖子以获取我想要的内容...

我可以使用x86 Accelerated(HAXM)模拟器,只需将其添加到我的Module的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

答案 3 :(得分:59)

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

答案 4 :(得分:33)

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

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

答案 5 :(得分:11)

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

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

答案 6 :(得分:7)

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

  

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

答案 7 :(得分:7)

这个解决方案对我有用。试试这个, 在应用的 build.gradle 文件

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

答案 8 :(得分:6)

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

enter image description here

答案 9 :(得分:4)

这对我有用... 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
               }
    }
 }

enter image description here

答案 10 :(得分:3)

在Android 8上:

  

apache.commons.io:2.4

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

答案 11 :(得分:3)

在我的情况下,在xamarin项目中,通过选择属性-> Android选项并选中“使用共享运行时间”和“使用快速部署”(在某些情况下为enter image description here

答案 12 :(得分:3)

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

答案 13 :(得分:2)

在2017年视觉工作室社区版中,有时从Android选项中选择支持的ABI无效。

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

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

为了编辑,

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

答案 14 :(得分:2)

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

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

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

答案 15 :(得分:2)

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

转到 build.gradle 以获取您的 app module 并在 android 中阻止添加:

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

答案 16 :(得分:1)

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

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

答案 17 :(得分:0)

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

答案 18 :(得分:0)

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

答案 19 :(得分:0)

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

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

答案 20 :(得分:0)

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

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

答案 21 :(得分:0)

从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 :(得分:0)

就我而言,设置以下选项有助于我解决问题

enter image description here

答案 23 :(得分:0)

以某种方式,这无缘无故地解决了这个问题。

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

答案 24 :(得分:0)

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