React Native Android应用运行失败:Task :app:mergeDebugNativeLibs 报错
解决React Native Android更新Gradle和Kotlin后libfbjni.so冲突问题
问题原因
更新Gradle插件至3.6.3并添加Kotlin依赖后,项目中多个依赖库(如React Native核心库与部分第三方库)同时包含libfbjni.so文件,导致打包时Native库合并操作冲突。
解决方案
方案1:添加打包规则排除重复文件
在app模块的build.gradle文件中,于android代码块内新增packagingOptions配置,指定优先保留某一份libfbjni.so文件:
android { // 保留原有其他配置 packagingOptions { pickFirst 'lib/armeabi-v7a/libfbjni.so' pickFirst 'lib/arm64-v8a/libfbjni.so' pickFirst 'lib/x86/libfbjni.so' pickFirst 'lib/x86_64/libfbjni.so' } }
方案2:排查并修复依赖冲突
- 执行以下命令查看项目完整依赖树,定位重复引入
fbjni的第三方库:
cd android ./gradlew app:dependencies
- 要么将冲突的第三方库升级至适配当前React Native版本的最新版,要么在依赖声明中排除旧版
fbjni:
dependencies { // 示例:排除某第三方库中的fbjni依赖 implementation('com.example:target-library:1.0.0') { exclude group: 'com.facebook.fbjni' } }
方案3:清理项目缓存后重新构建
- 执行命令清理缓存与构建文件:
cd android ./gradlew clean rm -rf .gradle rm -rf ../node_modules rm -rf ../package-lock.json
- 重新安装依赖并构建:
cd .. npm install cd android ./gradlew assembleDebug
额外优化提示
- 当前
compileSdkVersion与targetSdkVersion设置为31,但buildToolsVersion为29.0.2,建议将buildToolsVersion升级至与compileSdk匹配的版本(如31.0.0),减少版本不兼容风险 - Kotlin 1.6.0与Gradle插件3.6.3兼容性良好,若后续仍有异常,可尝试将Gradle插件升级至4.x版本(需同步升级Gradle wrapper版本)
内容的提问来源于stack exchange,提问作者Muhammad Saqib Noor
相关产品推荐
相关产品推荐

