React Native安卓构建报错:libfbjni.so文件重复冲突
报错信息
Caused by: com.android.builder.merge.DuplicateRelativeFileException: 2 files found with path 'lib/armeabi-v7a/libfbjni.so'.
If you are using jniLibs and CMake IMPORTED targets, refer to official guidance on resolving such conflicts
at com.android.builder.merge.StreamMergeAlgorithms.lambda$acceptOnlyOne$2(StreamMergeAlgorithms.java:75)
at com.android.builder.merge.StreamMergeAlgorithms.lambda$select$3(StreamMergeAlgorithms.java:95)
at com.android.builder.merge.IncrementalFileMergerOutputs$1.create(IncrementalFileMergerOutputs.java:88)
... 34 more
当前依赖配置
dependencies { implementation "com.facebook.react:react-native:+" implementation 'androidx.fragment:fragment:1.2.1' implementation "com.pdftron:pdftron:9.2.2-beta07" implementation "com.pdftron:tools:9.2.2-beta07" implementation "com.pdftron:collab:9.2.2-beta07" }
解决方法
问题根源是React Native与PDFTron的依赖包中都包含了libfbjni.so文件,导致构建时文件合并冲突。以下是两种有效解决方式:
方式1:排除重复依赖模块
修改依赖配置,在PDFTron的三个依赖中排除掉包含重复so文件的com.facebook.fbjni组:
dependencies { implementation "com.facebook.react:react-native:+" implementation 'androidx.fragment:fragment:1.2.1' implementation("com.pdftron:pdftron:9.2.2-beta07") { exclude group: 'com.facebook.fbjni' } implementation("com.pdftron:tools:9.2.2-beta07") { exclude group: 'com.facebook.fbjni' } implementation("com.pdftron:collab:9.2.2-beta07") { exclude group: 'com.facebook.fbjni' } }
方式2:配置文件合并策略
在android/app/build.gradle的android代码块中添加打包选项,指定遇到重复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' } }
优先级建议
优先使用方式1,因为直接排除重复依赖能从根源避免冲突,减少版本兼容风险;若方式1无效,再尝试方式2兜底。
内容的提问来源于stack exchange,提问作者Shirsh Shukla

