React Native安卓端Animated WebP无法播放 构建报重复类错误
问题根源
你出现这个报错的核心原因是Fresco系列依赖的版本不统一:你引入的fresco:2.0.0、animated-gif:2.0.0和后续的animated-webp:2.3.0、webpsupport:2.3.0版本号不一致,跨版本的Fresco组件会依赖不同版本的底层公共库,就会出现重复类冲突。
解决方法
- 第一种方案:统一所有Fresco相关依赖的版本号,要么全用2.0.0,要么全用2.3.0,推荐直接升级到同一个高版本即可,修改你的
app/build.gradle配置为:
// 统一使用2.3.0版本 implementation("com.facebook.fresco:fresco:2.3.0") // For animated GIF support implementation 'com.facebook.fresco:animated-gif:2.3.0' // For WebP support, including animated WebP implementation 'com.facebook.fresco:animated-webp:2.3.0' implementation 'com.facebook.fresco:webpsupport:2.3.0'
- 如果修改后还是出现重复类冲突,就主动排除冲突的stetho模块,在依赖配置里添加排除规则:
implementation("com.facebook.fresco:fresco:2.3.0") { exclude group: 'com.facebook.fresco', module: 'stetho' } implementation 'com.facebook.fresco:animated-gif:2.3.0' implementation 'com.facebook.fresco:animated-webp:2.3.0' implementation 'com.facebook.fresco:webpsupport:2.3.0'
- 配置修改完成后,清理之前的构建缓存再重新构建即可:
先执行cd android && ./gradlew clean,再回到项目根目录重新运行项目。 - 如果你使用的是React Native 0.60+版本,本身已经内置了Fresco,还可以直接复用内置的Fresco版本,不需要手动指定版本号,避免和RN内置的版本冲突:
// 复用RN内置的Fresco版本号 implementation("com.facebook.fresco:fresco:${rootProject.ext.frescoVersion}") implementation "com.facebook.fresco:animated-gif:${rootProject.ext.frescoVersion}" implementation "com.facebook.fresco:animated-webp:${rootProject.ext.frescoVersion}" implementation "com.facebook.fresco:webpsupport:${rootProject.ext.frescoVersion}"
内容的提问来源于stack exchange,提问作者Emre D.
相关产品推荐
相关产品推荐

