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

时间:2016-04-04 22:45:21

标签: android android-ndk

我遇到了导入我项目的第三方库的问题。

我阅读了很多关于此的文章,但没有得到任何有关如何正确处理它的信息。

我将我的课程.so放到文件夹中。

enter image description here

问题是我尝试运行我收到的应用程序

[INSTALL_FAILED_NO_MATCHING_ABIS: Failed to extract native libraries, res=-113]

11 个答案:

答案 0 :(得分:56)

2018年3月25日星期日:

我在 Android Studio 3.0.1

中遇到了这个问题

检查了大量帖子后,修复有效:

转到模块 build.gradle ,然后在 Android 块中添加此脚本:

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

简单的解决方案。随意评论。感谢。

答案 1 :(得分:9)

2018年9月13日 添加更多类型并将 universalApk 设置为 false 以重新使用apk大小

splits {
    abi {
        enable true
        reset()
        include 'x86', 'x86_64', 'armeabi', 'armeabi-v7a', 'mips', 'mips64', 'arm64-v8a'
        universalApk false
    }
}

答案 2 :(得分:4)

我在模拟器中遇到了同样的问题,但我解决了这个问题:

使用x86_64系统映像(ABI)创建新的模拟器

select device

select x86_64

就是这样。

此错误表示系统(设备)无法运行该应用程序。

我希望这对某人有帮助。

答案 3 :(得分:4)

如果在处理flutter项目时遇到此错误,则可以在模块build.gradle中和Android block中然后在defaultConfig块中添加以下代码。当我尝试进行快速的APK构建时,发生了此错误。

android{
    ...
    defaultConfig{
        ...
        //Add this ndk block of code to your build.gradle
        ndk {
            abiFilters 'armeabi-v7a', 'x86', 'armeabi'
        }
    }
}

答案 4 :(得分:3)

一段时间后,我调查并了解路径位于我的libs是对的。我只需要为不同的架构添加文件夹:

  • ARM EABI v7a系统映像

  • Intel x86 Atom System Image

  • MIPS系统图像

  • Google API

答案 5 :(得分:3)

我的应用程序在Nexus 5X API 26 x86(模拟器上的虚拟设备)上运行,没有任何错误,然后我包含了第三方AAR。然后它不断给出这个错误。我清理,重建,检查/取消选中即时运行选项,擦除AVD中的数据,执行冷启动但问题仍然存在。然后我尝试了找到aliased in a particular file to a shorter name的解决方案。他/她说添加分裂& abi阻止'x86','armeabi-v7a'进入模块build.gradle文件和hallelujah它又干净又新鲜:)

编辑:关于这个here Driss Bounouar的解决方案似乎是一样的。但是在添加新的AAR和HAXM模拟器之前,我的模拟器是x86。

答案 6 :(得分:3)

flutter clean确实对我有用

答案 7 :(得分:1)

这是由gradle对某些过时的东西的依赖导致的,该东西会导致错误。删除gradle依赖项,直到错误不再出现。对我来说是

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

此行需要更新为新版本,例如:

api group: 'commons-io', name: 'commons-io', version: '2.6'

答案 8 :(得分:1)

Android 9和Android 11仿真器支持arm二进制文件。

https://developer.android.com/studio/releases/emulator#support_for_arm_binaries_on_android_9_and_11_system_images

在使用API​​级别29的x86模拟器时,尝试安装apk定位臂ABI时遇到相同的问题。

我尝试使用API​​级别30的x86模拟器,并且运行良好。

答案 9 :(得分:0)

使用cmake构建时面临此问题的任何人,解决方案是确保在应用模块的android {}块中包含了四个受支持的平台:

 externalNativeBuild {
            cmake {
                cppFlags "-std=c++14"
                abiFilters "arm64-v8a", "x86", "armeabi-v7a", "x86_64"
            }
        }

答案 10 :(得分:0)

进行拆分取决于与外部版本相同的abis列表。真理的唯一来源。

android {
// ...
defaultConfig {
// ...
    externalNativeBuild {
        cmake {
            cppFlags "-std=c++17"
            abiFilters 'x86', 'armeabi-v7a', 'x86_64'
        }
    }
} //defaultConfig

splits {
    abi {
        enable true
        reset()
        include defaultConfig.externalNativeBuild.getCmake().getAbiFilters().toListString()
        universalApk true
    }
}
} //android