Android Studio运行React Native项目mergeDebugNativeLibs构建失败
修复方案
这个报错是原生库合并阶段检测到多份路径完全一致的libc++_shared.so文件导致,和JVM内存配置无关,之前添加的org.gradle.jvmargs=-Xmx4608m参数只对构建OOM问题有效,无法解决当前重复文件冲突。按以下顺序操作即可解决:
- 第一步:添加重复文件选取规则
打开路径/android/app/build.gradle文件,在android{}配置块内添加如下配置:
android { // 保留原有compileSdkVersion、defaultConfig等所有配置不变 packagingOptions { pickFirst 'lib/x86/libc++_shared.so' pickFirst 'lib/x86_64/libc++_shared.so' pickFirst 'lib/armeabi-v7a/libc++_shared.so' pickFirst 'lib/arm64-v8a/libc++_shared.so' } }
如果使用的是AGP 7.0及以上版本,把上述配置里的packagingOptions替换为packaging即可,内部规则写法不变。
- 第二步:清理旧构建缓存
在项目根目录执行命令:
cd android && ./gradlew clean
清理完成后回到项目根目录重新执行启动命令即可,绝大多数场景下这两步操作就能解决问题。
如果上述操作后仍报错,执行以下排查操作:
- 执行依赖树查询命令定位冲突来源:
打开生成的cd android && ./gradlew app:dependencies > dep_log.txtdep_log.txt文件,搜索c++_shared关键字,定位到重复引入该库的第三方依赖,在引入该依赖的代码块中添加排除规则即可,示例:implementation('对应冲突依赖的坐标') { exclude module: 'c++_shared' } - 检查ABI架构配置一致性
打开/android/gradle.properties文件,确认存在如下配置:
再打开reactNativeArchitectures=armeabi-v7a,arm64-v8a,x86,x86_64/android/app/build.gradle,在defaultConfig{}块内确认ndk配置匹配:
修改完成后再次执行clean命令清缓存重新构建。defaultConfig { // 原有配置保留 ndk { abiFilters "armeabi-v7a", "arm64-v8a", "x86", "x86_64" } }
内容的提问来源于stack exchange,提问作者AJDee
相关产品推荐
相关产品推荐

