You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 00:14:53