[react native]安卓上gif图不动

666 阅读1分钟

在android/app/build.gradle中的dependencies中添加

   //android gif播放 0.72.4
    implementation 'com.facebook.fresco:animated-gif:2.5.0'

用最新的3.1.3也会报错

implementation 'com.facebook.fresco:animated-gif:3.1.3'

FATAL EXCEPTION: main  
Process: com.propertymanager, PID: 26842  
java.lang.IncompatibleClassChangeError: Found interface com.facebook.imagepipeline.image.CloseableStaticBitmap, but class was expected (declaration of 'com.facebook.imagepipeline.image.CloseableStaticBitmap' appears in /data/app/~~70iOB-5H2EahEDayFJVU6Q==/com.propertymanager-s_f4RYPetucP6uZxD64IYw==/base.apk)  
at com.facebook.drawee.backends.pipeline.DefaultDrawableFactory.createDrawable(DefaultDrawableFactory.java:50
...

不是很懂android,问的AI,然后我就降低版本从2.0.0开始一个个尝试

这个错误表明 Fresco 插件 animated-gif 的版本可能不兼容。
根据错误信息,可以看出它找到了 CloseableStaticBitmap 接口,但现在这个类已不再是接口,导致兼容问题。
查看 Fresco 官方文档,从 2.0 版本开始 animated-gif 插件进行了重构:
- 2.0.0 及以上版本采用新的代码结构和类名
- 与 Fresco 核心库以插件形式分离
而你项目可能使用的 Fresco 核心库版本较低,不兼容新的 animated-gif 插件 3.1.3。
有以下几种解决方案:
1. 降级 animated-gif 插件版本到 2.x 兼容旧 Fresco 核心库
2. 升级 Fresco 核心库到最新版,使版本号一致
3. 如果不便于升级 Fresco,可以考虑不使用 animated-gif 功能
4. 修改 animated-gif 源码兼容旧 Fresco 版本
建议优先尝试方案1或2,保持 Fresco 与各插件版本一致,避免因版本不兼容而引发问题。
可以参考官方文档检查各组件版本要求。

2.5.0不行,自行从Maven仓库对着版本调整