React Native Android编译遇重复类问题,常规方案无效求助
解决React Native Android编译时com.canhub.cropper类重复冲突问题
首先明确核心原因:com.vanniktech:android-image-cropper在4.x版本后已迁移到com.github.CanHub:Android-Image-Cropper,两者属于同一库的不同groupId发布版本,类完全重复,这是冲突的根源。以下是常规方案失效后的针对性解决步骤:
1. 精准定位依赖来源
先执行依赖树命令,找出所有引入这两个库的模块:
./gradlew app:dependencies
在输出中搜索android-image-cropper和Android-Image-Cropper,确认是哪个React Native第三方库(比如react-native-image-picker、react-native-image-crop-picker等)偷偷引入了冲突版本。
2. 全局强制统一版本+排除冲突依赖
在项目根目录的android/build.gradle中,修改allprojects块的resolutionStrategy,强制使用高版本的CanHub库,并彻底排除vanniktech的旧groupId依赖:
allprojects { repositories { // 保留原有的仓库配置(mavenCentral、google等) } configurations.all { resolutionStrategy { // 强制使用统一版本,建议选4.5.0 force 'com.github.CanHub:Android-Image-Cropper:4.5.0' // 排除所有vanniktech组的裁剪库 exclude group: 'com.vanniktech', module: 'android-image-cropper' } } }
3. 针对特定RN库单独排除
如果全局排除无效,找到引入冲突依赖的RN库,在android/app/build.gradle的dependencies块中单独排除:
比如发现是react-native-image-picker引入的vanniktech版本:
implementation(project(':react-native-image-picker')) { exclude group: 'com.vanniktech', module: 'android-image-cropper' }
4. 清理缓存彻底刷新依赖
执行以下命令清理所有缓存,避免旧依赖残留:
# 清理Gradle缓存 ./gradlew clean # 删除Node.js依赖缓存 rm -rf node_modules yarn.lock package-lock.json # 重新安装依赖 yarn install # 或 npm install # 可选:在Android Studio中执行File -> Invalidate Caches...清理IDE缓存
5. 检查手动引入的本地库
确认项目中没有手动添加的.jar或.aar包包含com.canhub.cropper相关类,这类本地库也会导致重复冲突,需要移除重复的本地依赖。
内容的提问来源于stack exchange,提问作者s-hunter
相关产品推荐
相关产品推荐

