project/개발 업무

Lottie 리소스 문제로 앱이 초기화되는 현상

lgvv 2022. 7. 12. 14:27

Lottie 리소스 문제로 앱이 초기화되는 현상

 

웹 앱이었는데 간단한 동작에서 크래시 발생

  • 결론: 로티 리소스 자체의 문제

 

개발활경

Xcode 13.2.1

 

 

문제상황

1. 특정 상황에서 메모리가 비정상적으로 튐.

2. 스크롤을 하다가 앱이 죽거나 앱이 흰 화면이 뜨면서 초기화가 되어버림.

 

 

접근법

RxSwift 기반으로 되어 있어서 어느 지점에서 메모리릭이 나는게아닐까 접근

 

Xcode Instruments 시도

  • 1. Edit Scheme > Profile에 들어가서 build configuration을 debug로 세팅
    • 상단에 Xcode simulator 설정하는거 옆에 위치
  • 2. 아래 사진처럼 저 부분을 꾹!! 누르고 있으면 저렇게 뜨는데 저거 Build for Profiling으로 변경

build for profiling으로 변경

 

3. 아래와 같은 Instruments 창이 나타남

Instruments

 

4. 여기서 Leaks을 선택

 

Leak 선택 시 나타나는 창

 

5. 위에 빨간 버튼을 누르고 앱을 사용하면서 어디서 문제가 발생하는지 찾기

 

여기 빨간버튼 누르고 시작!!

 

 

 

결과 분석

아래 이미지를 보면 Leak은 나는데 저게 도대체 왜 나는지 알 수 없었음 ...

 

이미지와 관련한게 메모리에 엄청나게 할당되는데, 크래시나 웹뷰가 초기화 될 만큼 뭐가 할당될 정도로 서비스가 크지 않아서 의문이 들었음.

 

무언가 문제가 발생하고 있다!

 

 

 

 

아래 스택 오버플로우를 보고 메모리를 엄청 많이 잡는 친구에 대해서 살펴 보았다.

https://github.com/SDWebImage/SDWebImage/issues/548

 

GIF Memory Leak - VM: ImageIO_GIF_Data · Issue #548 · SDWebImage/SDWebImage

Hi, I'm using SDWebImage on iOS 7 and am noticing a very high increase in memory usage any time a GIF is loaded from a URL. I'm not sure if it's a problem with SDWebImage or just iOS 7,...

github.com

 

 

 

결론

리소스 자체에 문제가 있었다. Lottie를 인디케이터를 사용하고 있었는데, 해당 리소스 자체를 까보니까 정상적인 리소스라고 볼 수 없을 정도로 엄청난 공백과 해독하기 어려운 문자들이 엄청나게 껴 있었다.

 

결과적으로 리소스를 교체하고 나니 문제가 해결되었는데, 리소스 자체에 문제가 있을수도 있다는 경험을 하게 되었다.

끝.