[Unity-AOS] Application.Quit()으로 종료시 크래시 이슈

  • 환경
    • Windows 10
    • Unity 2020.3.7f1
    • IL2CPP AOS 빌드
  • 증상
    • Applicaiton.Quit()으로 앱 종료시 랜덤하게 크래시 발생함
  • Crash Logs
E AndroidRuntime: Process: com.**.**, PID: 
E AndroidRuntime: java.lang.Error: FATAL EXCEPTION [main]
E AndroidRuntime: Unity version : 2020.3.7f1
E AndroidRuntime: Device model : samsung SM-G975N
E AndroidRuntime: Build Type : Release
E AndroidRuntime: Scripting Backend : IL2CPP
E AndroidRuntime: ABI : armeabi-v7a
E AndroidRuntime: Strip Engine Code : true
E AndroidRuntime: Caused by: java.lang.RuntimeException: Unable to destroy activity {com.**.**/com.**.**.CustomActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void com.unity3d.player.f.a(android.view.SurfaceView)' on a null object reference
E AndroidRuntime: at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:4204)
......

  • 해결
    • (UnityPlayerActivity 확장을 사용한다는 가정) UnityPlayerActivity.java 파일의 onDestroy 함수에 removeAllViews() 추가함. 이유는 확실히 모르겠으나 android.view.SurfaceView 관련하여 null object에 접근하는 것으로 보여 모든 view에 대한 제거를 시도함.
@Override protected void onDestroy ()
{ 
     mUnityPlayer.removeAllViews(); 
     mUnityPlayer.quit(); 
     super.onDestroy();
}

Leave a Reply

Your email address will not be published. Required fields are marked *