[Flutter] GIF 에러 - Codec failed to produce on image, possibly due to invalid image

Tyger·2023년 6월 27일
0

ISSUE

목록 보기
1/1

GIF 에러 - Codec failed to produce on image, possibly due to invalid image

이번에는 Flutter 특정 버전에서 발생하고 있는 GIF 관련 에러에 대해서 알아보도록 하겠다.

어느 순간 부터 갑자기 배포된 서비스에서 GIF 이미지가 에러 위젯으로 노출이 되는 현상이 발생하기 시작하였다.
네트워크 이미지는 cached_network_image를 사용하고 있었는데, 앱이 백그라운드에만 갔다 오면 일부 GIF가 정상적으로 표시되지 못하고 에러 위젯으로 변경이 되고 있었다.
해당 이슈를 확인하기 위해 ErrorWidget을 제거하고, 백그라운드로 돌려보니 바로 아래 에러가 잡히기 시작했다.

ImageProvider를 사용해서 ErrorListener에 로그를 찍어보면 로그창에 동일한 에러가 표시될 것이다.

해당 이슈를 찾다보니, Impeller 엔진을 사용하는 특정 버전에서 발생하고 있는 에러로 확인이 되었다.

https://github.com/flutter/flutter/issues/126768

Impeller

  • Flutter IOS Impeller 엔진 활성화/비활성화 방법
<key>FLTEnableImpeller</key>
<true/>
flutter run --no-enable-impeller

에러 관련해서 내용을 찾아보니, Flutter 3.3으로 다운그레이드를 하고 해결 됬다는 이슈가 있어서 다운그레이드도 해봤지만 아예 GIF를 로드해오지 못하고 있었다.

Fluter - 3.7.12

먼저 Flutter 3.7.12 버전에서 Impeller 사용시 처음에 정상적으로 로드된 GIF가 백그라운드로 빠지는 순간 에러 위젯으로 변경되는 것을 확인할 수 있다.

Image.assets, Image.network, CachedNetworkImage 모두 동일하게 에러가 발생하고 CachedNetworkImageProvider 에서는 그냥 GIF가 멈춰버렸다.

Impeller 엔진을 비활성화 시키고 기존 Skia 사용으로 비교를 해봤다. SKia에서는 문제 없이 잘 나오고 있다.

Impeller

Skia

Flutter - 3.10.5

이번엔 3.10.5 최신 버전으로 업그레이드를 진행하고, 동일하게 테스트 해봤다.

여기 버전에서는 문제가 발생하지 않는다.

마무리

GIF 이미지 관련 에러가 발생하신 분들은 Flutter 버전을 확인해 보시고, 업그레이드를 고려해 보시길 추천한다.

profile
Flutter Developer

0개의 댓글