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

INSTALL_FAILED_NO_MATCHING_ABIS

这是什么意思?


当前回答

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

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

其他回答

在我的案例中,在xamarin项目中,在visual studio错误通过选择属性-> Android选项并检查使用共享运行时间和使用快速部署,在某些情况下,其中之一

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

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

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

所以我把。apk文件改为。zip文件提取它,并找到了这个文件所在的lib文件夹/x86_64/darwin/libscrypt。为了删除这个,我在我的构建中添加了一个代码。Gradle模块下面的android部分(即)

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

欢呼声问题解决

在我的情况下(Windows 10, Flutter, Android Studio),我只是在Android Studio中创建了一个新的模拟器设备。这一次,我选择了x86_64 ABI而不是x86。这解决了我的问题。 我的模拟器设备如下面的截图所示。

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

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

替换为:

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

问题会得到解决。