이유없이 Unity Android Crash 되는 현상

2013. 1. 9. 09:38C# And Unity

개발하다보면, Editor에서는 괜찮은데 실제 폰에 올려보면 이유없이 Crash되는 때가 있다.

이게 Crash가 항상되면 오류를 찾겠는데, 그런것도 아닌 될때가 있고 안될때가 있다는게 문제이다.

그 해결법을 적어봤다.


1. Splash Screen 나오자 마자 죽는경우 (프로그램을 재실행했을때 죽는경우)

   보통 프로그램에서 Application.Quit 를 이용해 프로그램을 죽인후 다시 실행할때 생긴다. Android VM 특성상 모든 Thread를 제대로 Dispose 하지 않아 생기는 문제로 의심된다.

Application.Quit 을 하기전에 모든 Thread를 Dispose하고 죽이도록 한다.

ProcessThreadCollection pt = Process.GetCurrentProcess().Threads;

foreach(ProcessThread p in pt) {

p.Dispose();

}

System.Diagnostics.Process.GetCurrentProcess().Kill();


2. 프로그램 시작후 죽는경우

만약 MonBehavior의 Start()에 여러 기능 특히 sqlite 관련된 초기화 작업이 있는경우 이를 Lazy 로딩 하라.

예를 들어 sqlite db 초기화 작업을 Start에서 하지말고, UI가 뜬후 버튼을 누르면 초기화 되도록 하라.


3. Signal fatal 11 

 http://forum.unity3d.com/threads/143753-Error-Fatal-signal-11-(SIGSEGV)

Unity pro version 3.5.3

Tested on Galaxy Tab 7 (GT-P3100) 
Android version: 4.0.4
에만 나오는 문제 같다. 버전업을 하면 괜찮을 것 같다.