[Unite Seoul 2025] Mobile native debugging & ANR
- ANR은 애플리케이션이 특정 시간 안에 응답하지 않을 때 발생하는 문제이며, 유니티 게임에서도 발생할 수 있다. ⏰
- ANR의 원인은 애플리케이션 코드, 유니티 엔진, 타사 SDK, 안드로이드 시스템 라이브러리 등 다양할 수 있다. 🧩
- 네이티브 디바이스 로그 수집, 무선 디버깅, 안드로이드 Logcat 패키지 등을 활용하여 ANR을 진단할 수 있다. 🛠️
- 유니티 엔진 코드 자체에서 발생하는 ANR은 제작사에서 해결하기 어려우므로 커뮤니티 채널 검색 후 유니티에 버그를 신고하는 것이 좋다. 🐛
- 타사 SDK 플러그인 오류는 모든 SDK를 제거하고 점차적으로 추가하는 방식으로 확인할 수 있다. ➕
- 메모리 부족으로 인한 ANR도 발생할 수 있으며, 낮은 메모리와 ANR을 연결하는 증거가 발견되고 있다. 💾
- 크롬 관련 ANR은 잘못된 구현, 오래된 웹 버전, 높은 시스템 리소스 사용량 등으로 인해 발생할 수 있다. 🌐
- 유니티 샌드 메시지 블록드 ANR은 C# 스크립트의 과도한 작업과 어플리케이션 재개 시 전달되는 메시지로 인해 발생한다. ✉️
- 네이티브 폴런스 메인 쓰레드 아이들 ANR은 시스템 리소스 사용량이 많기 때문이며, 무시해도 되는 경우가 많다. 💤
- 바인더 관련 ANR은 메인 쓰레드가 느린 바인더 호출을 처리하느라 바빴기 때문에 발생하며, 타사 SDK 내부에서 발생할 수 있다. 🔗