You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

解决多SO文件路径冲突后遇INSTALL_FAILED_NO_MATCHING_ABIS安装错误求助

解决Native库冲突与INSTALL_FAILED_NO_MATCHING_ABIS安装错误

咱们一步步拆解你遇到的这串连锁问题,帮你彻底理清根源并解决:

1. 先理解前两个重复SO文件的报错

你最开始碰到的:

error: More than one file was found with OS independent path 'lib/armeabi-v7a/libopencv_java3.so'

以及后续的:

error: More than one file was found with OS independent path 'lib/armeabi-v7a/libMyLibs.so'

本质都是项目中多个模块/第三方依赖包含了同路径、同名称的Native库文件,Gradle构建时无法确定应该选用哪一个,因此抛出冲突错误。你添加packagingOptions里的pickFirst规则确实能让构建通过,但这只是“强行选择第一个找到的文件”,可能埋下后续的隐患——比如你选的那个SO文件可能不兼容目标设备的架构。

2. 核心错误:INSTALL_FAILED_NO_MATCHING_ABIS: Failed to extract native libraries, res=-113

这个报错的意思非常明确:你的应用打包的Native库(.so文件)的CPU架构(ABI),和你要安装的设备的CPU架构不匹配。

常见的触发场景有这几种:

  • 你只打包了armeabi-v7a(32位ARM)的SO文件,但测试设备是arm64-v8a(64位ARM)、x86或x86_64架构;
  • 反过来,你打包了64位架构的SO,但设备是32位的;
  • 用pickFirst处理冲突时,不小心排除了设备需要的架构对应的SO文件;
  • 某个第三方依赖只提供了特定架构的SO,而你没有在项目中适配该架构。

3. 针对性解决步骤

步骤1:确认目标设备的ABI架构

先搞清楚你的测试设备支持什么架构,最简单的方式是用ADB命令:

adb shell getprop ro.product.cpu.abi

执行后会返回设备的主ABI(比如arm64-v8a或x86)。

步骤2:统一项目的ABI支持范围

在app模块的build.gradle中,明确指定项目支持的ABI,确保覆盖你的测试设备:

android {
    defaultConfig {
        ndk {
            // 保留你需要的架构,下面这几个覆盖主流设备
            abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
        }
    }
}

这样Gradle构建时只会打包你指定的这些架构的SO文件,避免引入不必要的架构文件,同时确保和设备兼容。

步骤3:排查并修复SO文件冲突的根源

不要依赖pickFirst强行解决冲突,最好找到重复SO的来源:

  • 检查自己项目的libs目录,是不是手动放入了和第三方依赖重复的SO文件?如果是,删掉手动放入的,改用依赖库的方式引入;
  • 查看第三方依赖的依赖树,执行./gradlew app:dependencies,看看是不是多个依赖都引入了同一个Native库,尝试排除其中重复的依赖。

步骤4:清理缓存并重建项目

有时候旧的构建缓存会导致奇怪的问题,执行以下命令清理后再重新构建:

./gradlew clean
./gradlew assembleDebug

然后再尝试安装到设备上。

内容的提问来源于stack exchange,提问作者jojaba

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 07:53:13