Android APK [INSTALL_FAILED_NO_MATCHING_ABIS:无法提取本机库,res = -113]

时间:2017-07-31 14:58:29

标签: android google-cloud-messaging adb

当我尝试在API 26上安装Android应用程序时。我收到此错误。

首先我尝试build tool version - 25.3.1遇到同样的问题,如下图所示。

enter image description here

然后我将build tools version更新为26.0.1,并将库版本支持到26.0.0

最近的Google Play服务版本 - 11.0.4

我已经检查过我使用的android库是否有本机代码,即C ++代码,但我使用的每个库都是用Java编写的,期望一个库包含PHP,Python和Ruby。

我正在使用

  1. Google地图
  2. Google位置
  3. Google GCM。
  4. 我已尝试在我的Gradle文件中包含ABI Splits,如here

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

    但每次遇到同样的错误。

    仿真器设备详细信息:

    enter image description here

2 个答案:

答案 0 :(得分:3)

基于此thread,当您的应用使用ARM体系结构以及您尝试安装应用支持的设备或模拟器(例如x86)时,会出现此问题。尝试在ARM模拟器上安装它。此外,如果您的应用程序是基于ARMv7架构构建的,请确保使用ABI系统映像: armeabi-v7a

其他参考资料:

希望这有帮助!

答案 1 :(得分:1)

当ADB无法根据您使用的电话或仿真器安装正确的APK时,就会出现此问题。 ABI拆分可以轻松解决此问题。

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

但是,如果不能(这似乎也是您的情况),那么您正在使用的某些库似乎不支持电话或仿真器的API级别。为确保这种情况,请尝试在不同的API级别的模拟器或电话上安装您的应用程序,您会注意到该应用程序只能在少数几个上运行,而很少支持其他应用程序。可能有些本机库与所有Android版本都不兼容。

以我为例,我成功地在装有Android Oreo和Pie以外的Android手机上运行了该应用程序。原因是我的gradle具有以下不支持提到的API级别(28及以上)的实现。

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

如果您有任何可能不支持所有版本的库,请尝试将其版本更改为较新的版本,或者,如果没有它就可以实现功能,则可以删除它。就我而言,我很幸运,我根本不需要它,删除它可以解决问题。