포스트

Unity ANR

Unity ANR

머리말


ANR


Mobile Native Debugging & ANR

ANR 정의

Applicaftion Not Responding
int Android

App freezing
IOS

Unity Main Thread != Android Main Thread
연동이 안되면서 발생

크게 5가지

5초는 설정가능 (절대적 수치 X)

입력 전달 타임아웃

  • 입력 에 5초 이내 응답하지 않음 서비스 실행
  • 서비스 수 초내 실행을 ㅡ완료하지 않음 StartForeground() tjqltmrk “를 호출하지 않음 브로드캐스트 JobScheduler

입력 전달에 집중 설명

ANR Thread 동작

  • Dump 작성

이부분에 문제

AND 감지 시점 stack trace가 정확한 시점 알기 어려움

MAinThread BLco kStarted
UserInputEvetn
5초 timeout
OS Triggers the ANR
수초후에 ANR Dlialog Shwon

처음 시작했을때의 StrackTrace가 아니라
수초 지나서 캐치할때의 StackTarce를 보여주기 때문에 (정확하지 않음)

다양한 레벨에서 숨겨져 있을 수 있음

이것은 유니티에서 Crash 등으로 취급됨

Debugging 방법

Natice Device의 로그 수집 -> Android Logcar Pakcage

Wifi도 페어링도 가능??

Package, Input도 가능하네?

ADB dumpsys?

adb bugreprot

  • Tip
    • 가장 빈번한 Andoid Version 체크
    • ” Device 체크
    • 발생 싲가 APP Version 체크
    • 개발자 모드 + Perfetto
      • MainThread 체크
    • Third-party package 제거 테스트
    • Android Studio Simulator 사용??

Methodology

  • 보고 서비스 통합
  • 리포트를 분석, 스택 트레이스가 의미있는지 확인
    • 게임 관련 문제 != 안드로이드 런타임 라이브러리 or 저수전 라이브러리
    • 빌드 ID ghkrdls
      • ㅣㅑㅠㅑㅣ2체ㅔ..내 vkdlfdl dnlcl
      • ㄱㄷㅁㅇ딜 -ㅜ ㅣㅑㅠㅑㅣ2체ㅔ.내 ~~~~

발생 위치별 ANR

  • 게임 코드
    • cpp로 변환된 C#
    • 스택 트레이스 libil2cpp.so
      • C# 코드에서 오류 발생
    • 스크린 Game.cpp에서 올 발생
      • Logger는 C#스크립트의 클래스 이름
      • Log는 함수 이름
    • C# 프로젝~~
      • 사진 참고
  • 엔진코드
    • 사진 참고
  • 타사 SDK 플러그인
    • 사진 참고
  • 시스템 라이브러리
    • 일반적으로 개발자가 제어할 수 없음
    • Google 문의, 로그를 추가하여 문제 범위 좁히기, ANR 가능성 적음음
  • 메모리와 ANR 관련성
    • 종종 보고되는 사례 중 LowMemory 콜백 호출 확인
    • Activity가 백그라이누드로 전화되고 AOS에서 메모릴 경고를 수신할 때 발생 추정
    • 유휴메모리와 ANR 밀접한 관계 확인

사례

유니티 최대 정지는 4초?

@비동기 작업 시간 어떻게 탐지?

Surface Desrotyed
재현 어볇고 APp & 그래픽 장치 간의 잘못ㅅ된 상태와 관련이 있을 가능성

메모


참고

  • UNTIE SEOUL 2025
    • ‘이희소’: ‘Mobile Native Debugging & ANR’
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.