• [게임 개발] 유니티 - 안드로이드 freeze(앱 멈춤) 현상 해결2021.06.23 PM 09:57

게시물 주소 FONT글자 작게하기 글자 키우기
LINK : https://forum.unity.com/threads/android-build-project-freezes-after-5-minutes-with-playerloop-in-profiler-at-60-000-ms.863143/

개발 - 테스트 과정 중, 언젠가부터 앱이 멈추기 시작합니다.

 

평소에 안드로이드 휴대폰에 APK 빌드를 올려서 테스트하는데요.

석 달 쯤 전부터 앱 실행 후 특정되지 않는 상황에서 자꾸 앱이 급격히 느려지다가 멈춰버리는 현상이 지속적으로 발생했습니다.

무한루프에 빠질때처럼 순식간에 멈추는 건 아니어서, 급격히 느려지는 시점에서 이것 저것 확인해봤는데요.

- Scene 전환(Unload / Load) 해도 느려지고 멈춤

- SRDebugger 화면에서 메모리와 리소스를 해제해도 느려지다가 멈춤

- 게임 실행 후 아예 그냥 두어도 느려지다가 멈춤

- 아이폰, 아이패드 빌드는 정상 동작

 

뭔가 특별한 동작을 하다가 멈추는 것도 아니고, 타이밍도 특정되지 않어서 해결할 엄두가 나질 않았습니다.

자칫 잘못하다가는 지금까지 개발해 온 소스를 다 조각내면서 확인해야 하는 상황이 닥칠 것 같아서요...

 

지난주 주말에 큰 마음 먹고 UniRX 코드부터 떼어내면서 테스트를 시작했는데요.

결과적으로 이번에도 구글링 덕분에 해결할 수 있었습니다.


 

[현상]

안드로이드 빌드 - 앱 실행 후 특정되지 않는 상황과 시간에서 랜덤하게 앱이 freeze 됨

 

[문제 해결 과정]

- UniRX 코드에 OnComplete 디버그 코드를 넣어 Dispose가 제대로 실행되고 해제되는지 확인 - 정상 코드 확인

- 재귀 함수(Recursive) 구조로 의심되는 코드들 살펴보고 있으면 정리함 - 특이 사항 없음

- 유니티 프로파일러 스터디, 안드로이드 프로파일링 화면 확인 - freeze 상황에서 WaitForTargetFPSCPU 95% 이상을 먹으면서 freeze 현상 발생함을 확인

- 아이폰, 아이패드 빌드 - 정상 동작

- 안드로이드 다른 휴대폰 빌드 - V30 휴대폰을 맥에 연결하다가 실패 (MTP 설정 메뉴를 못찾아서 ㅠㅠ)

- Build Setting 창에서 Scene 목록을 전부 삭제하고 하나씩 추가해 봄

총 9개의 Scene 중에서 5개정도까지만 로드하고 빌드하면 잘 안죽음 - 아예 안죽는건 아님 ㅠㅠ

Scene 6~7개를 넘어가면 자주 죽음

- Scene 설정 혹은 몇몇 Scene에 잘못 구현된 내용이 있는지 의심하고 이쪽으로 구글링 시작

Unity Android freeze scene 검색어로 구글링

- 구글 상위 링크중에서 아래 링크를 확인

https://forum.unity.com/threads/android-build-project-freezes-after-5-minutes-with-playerloop-in-profiler-at-60-000-ms.863143/

- Project Setting 창에서 Player > Android (Settings for Android) > Resolution and Presentation

Optimized Frame Pacing 을 [v] -> [ ] 체크 해제

- (문제 해결) 안드로이드 APK 빌드 - 앱 실행 후 freeze 현상 발생하지 않음

 

[알게 된 내용]

- Unity 2019.2 버전부터 Android 에서 제공하는 - Optimized Frame Pacing(최적화된 프레임 속도) 기능이 추가됨. 프로젝트 디폴트로 [v] 됨

https://developer.android.com/games/sdk/frame-pacing?hl=ko

- 유니티 프로파일러를 배우고 사용해봄. 이제는 안드로이드 앱 실행시 유니티 프로파일러로 모니터링 할 수 있게 됨

 

 

금, 토, 월 약 3일에 걸쳐 보이지 않는 적과 사투를 벌였는데요.

그래도 다행히 3일만에 해결했다고 생각합니다. 최악의 경우 2주 정도까지 각오하고 있었어서요.

이렇게 또 한 고비를 넘어갑니다. :D

댓글 : 6 개
제가 겪어본 현상은 아니긴 하지만 막막할 거 같은 상황이네요. ㅠ
정리 해 주신 건 제가 좀 긁어 갈 수 있을 까요??
어디 올리거나 그런 게 아니라 제가 개인적으로 참고할 내용으로 정리해 두고 싶어서요.
자유롭게 퍼가세요. ^^
막힌 부분을 생각해서 해결하시는 모습을 보니 점점 레벨이 오르는 것 같습니다.
저는 아직 배울게 너무 많아서 뭐부터 해야할지 ^^;
규모가 작은 프로젝트를 개발하는 것도 이렇게 힘든데,
대규모 프로젝트를 개발하시는 분들은 정말 대단하신거 같아요.
이거 저도 겪었던 현상인데.....앱 실행후 한참 지나야 발생해서 개발자들중에 아직 모르는 사람 많더군요.
자주 발생하는 현상이라면 유니티에서 default로 Optimized Frame Pacing을 언체크해주는 편이 나을 것 같네요.

저는 그나마 빨리 발생하고 잦은 빈도로 재현되어서 해결이 가능했던 거 같아요.
친구글 비밀글 댓글 쓰기

user error : Error. B.