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

添加react-native-image-metadata后遇:app:transformClassesWithJarMergingForDebug失败求助

解决React Native中transformClassesWithJarMergingForDebug的重复类错误

我之前在集成react-native-image-metadata时也碰到过一模一样的问题,这个错误的核心原因是你的项目里有两个不同的依赖包同时引入了com.drewnoakes:metadata-extractor库,导致打包时出现重复的com/drew/imaging/ImageMetadataReader.class文件——和multiDexEnabled完全无关,multiDex是用来解决方法数超限的问题,对重复类冲突起不到作用。

下面是我亲测有效的解决步骤:

  • 第一步:定位重复依赖来源
    先通过Gradle命令查看项目的依赖树,找出哪个额外的依赖也引入了这个库:

    ./gradlew app:dependencies
    

    在输出结果里搜索metadata-extractor或者com.drew,你会看到至少两个依赖条目指向这个库,其中一个来自react-native-image-metadata,另一个可能是你项目里的其他图片处理类库、原生模块等。

  • 第二步:排除重复的依赖
    找到重复的依赖后,在app/build.gradle的dependencies块中,给那个重复引入的依赖添加排除规则。举个例子,如果发现react-native-image-picker也引入了这个库,就修改它的依赖声明:

    implementation project(':react-native-image-picker') {
        exclude group: 'com.drewnoakes', module: 'metadata-extractor'
    }
    

    如果是远程maven依赖,写法类似:

    implementation('com.example:some-third-party-lib:1.2.3') {
        exclude group: 'com.drewnoakes', module: 'metadata-extractor'
    }
    
  • 第三步:强制统一库版本(备选方案)
    如果不确定哪个依赖重复,或者排除后出现其他问题,可以在项目根目录的build.gradle中强制所有依赖使用同一个版本的metadata-extractor,建议选择react-native-image-metadata依赖的版本:

    subprojects {
        configurations.all {
            resolutionStrategy.force 'com.drewnoakes:metadata-extractor:2.16.0' // 替换为实际依赖的版本号
        }
    }
    
  • 第四步:清理缓存并重建
    完成上述操作后,执行清理命令再重新编译:

    ./gradlew clean
    ./gradlew assembleDebug
    

一般来说,做完这些步骤就能解决重复类的打包错误了。

内容的提问来源于stack exchange,提问作者Rashmi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:46:55