React Native Android构建遇com.facebook.jni/soloader重复类错误求助
React Native Android 重复类(com.facebook.jni/soloader)问题解决方案
核心问题分析
你的问题源于react-native-secure-storage依赖的com.facebook.conceal:conceal:2.0.2与React Native 0.72.5自带的fbjni、soloader模块存在类重复——conceal内部包含了这些类的旧版本,和RN核心依赖的新版本冲突,导致编译失败。
有效解决方案
方案1:升级react-native-secure-storage到兼容RN 0.72+的版本
优先尝试升级库到适配RN 0.72的最新稳定版,多数旧库的新版本已修复依赖冲突问题:
npm install react-native-secure-storage@latest --legacy-peer-deps
升级后无需手动修改库的Gradle配置,依赖会自动适配RN版本。
方案2:全局统一冲突依赖版本并排除重复
如果升级库不可行,在项目根目录的build.gradle(非app模块)的allprojects块中添加依赖解析策略,强制使用RN自带的冲突依赖版本,并排除conceal中的重复类:
allprojects { repositories { // 保留原有仓库配置 } configurations.all { resolutionStrategy { // 强制使用RN自带的fbjni版本 force 'com.facebook.fbjni:fbjni:0.3.0' // 强制使用RN自带的soloader版本 force 'com.facebook.soloader:soloader:0.10.5' // 从conceal中排除重复的fbjni和soloader模块 exclude group: 'com.facebook.fbjni', module: 'fbjni' exclude group: 'com.facebook.soloader', module: 'soloader' } } }
方案3:给react-native-secure-storage打补丁(适配旧版本)
若必须使用旧版react-native-secure-storage,用patch-package工具打补丁,避免手动修改本地文件被npm覆盖:
- 安装patch-package:
npm install patch-package --save-dev
- 修改
node_modules/react-native-secure-storage/android/build.gradle的依赖块:
dependencies { implementation 'com.facebook.react:react-native:+' // 调整conceal依赖,排除内部的冲突模块 implementation('com.facebook.conceal:conceal:2.0.2@aar') { exclude group: 'com.facebook.fbjni' exclude group: 'com.facebook.soloader' } }
- 生成补丁:
npx patch-package react-native-secure-storage
后续每次执行npm install后,补丁会自动应用。
验证步骤
- 清理构建缓存:
./gradlew clean
- 重新同步Gradle
- 运行项目:
npx react-native run-android
内容的提问来源于stack exchange,提问作者Haripriya Dhall
相关产品推荐
相关产品推荐

