Android 8上的INSTALL_FAILED_NO_MATCHING_ABIS错误

时间:2017-09-07 10:40:42

标签: android android-gradle android-8.0-oreo

我正在尝试构建连接我的Pixel手机的应用程序。我最近将手机升级到Android 8.我能够在手机中构建和打开应用程序直到上次升级,但在升级之后,我得到失败[INSTALL_FAILED_NO_MATCHING_ABIS:无法提取本机库,res = -113 ] 错误。

下面是我的gradle文件。有人可以告诉我这是什么问题吗?

def crc32_stm(bytes_arr):

    length = len(bytes_arr)
    crc = 0xffffffff

    k = 0
    while length >= 4:

        v = ((bytes_arr[k] << 24) & 0xFF000000) | ((bytes_arr[k+1] << 16) & 0xFF0000) | \
        ((bytes_arr[k+2] << 8) & 0xFF00) | (bytes_arr[k+3] & 0xFF)

        crc = ((crc << 8) & 0xffffffff) ^ custom_crc_table[0xFF & ((crc >> 24) ^ v)]
        crc = ((crc << 8) & 0xffffffff) ^ custom_crc_table[0xFF & ((crc >> 24) ^ (v >> 8))]
        crc = ((crc << 8) & 0xffffffff) ^ custom_crc_table[0xFF & ((crc >> 24) ^ (v >> 16))]
        crc = ((crc << 8) & 0xffffffff) ^ custom_crc_table[0xFF & ((crc >> 24) ^ (v >> 24))]

        k += 4
        length -= 4

    if length > 0:
        v = 0

        for i in range(length):
            v |= (bytes_arr[k+i] << 24-i*8)

        if length == 1:
            v &= 0xFF000000

        elif length == 2:
            v &= 0xFFFF0000

        elif length == 3:
            v &= 0xFFFFFF00

        crc = (( crc << 8 ) & 0xffffffff) ^ custom_crc_table[0xFF & ( (crc >> 24) ^ (v ) )];
        crc = (( crc << 8 ) & 0xffffffff) ^ custom_crc_table[0xFF & ( (crc >> 24) ^ (v >> 8) )];
        crc = (( crc << 8 ) & 0xffffffff) ^ custom_crc_table[0xFF & ( (crc >> 24) ^ (v >> 16) )];
        crc = (( crc << 8 ) & 0xffffffff) ^ custom_crc_table[0xFF & ( (crc >> 24) ^ (v >> 24) )];

    global stmCrc
    stmCrc = crc
    return crc

2 个答案:

答案 0 :(得分:20)

它有同样的问题,它在用一个不同的commons-io替换一个apache库(commons-io)之后起作用,它来自另一个bundle。

切换到新的开发设备(Pixel Phone w / Android 8.0 Oreo)后,问题出现了。

解决方案1 ​​

在您的情况下,您可以停止使用文件系统中的本地jar(compile fileTree(include: ['*.jar'], dir: 'libs'))并使用bintray中的正确gradle依赖项(例如)。

原始gradle依赖(抛出你描述的相同错误):

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

dependencies {
    compile 'org.apache.directory.studio:org.apache.commons.io:2.4'
    compile 'commons-cli:commons-cli:1.4'
}

使用正确的build.gradle工件commons-io工作:

dependencies {
    ...
    compile group: 'commons-io', name: 'commons-io', version: '2.5'
    compile group: 'commons-cli', name: 'commons-cli', version: '1.4'
    ...
}
  

忽略不同的依赖符号,它并不重要

解决方案2

您定义了多个目标ABI,您是否检查了您的设备支持哪个。也许您必须添加另一个,以便与您的设备ABI兼容。

您可以在Application.mk

中定义它们

另见:

答案 1 :(得分:0)

这可能有效:

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