Unity3D Android Jar Plugin 연동시 FATAL EXCEPTION GLThread

 우려했던 일이 현실이 되었네요. 처음 유니티3D 안드로이드 Jar 플러그인 만들어 연동하는 것을 정리했을 때 cocos2d-x jni로 GLThread쪽 이슈 처리에 대한 것을 언급했었습니다. 당시 포스팅은 간단한거라 이슈가 없었고, 지금은 페이스북 연동중인데 일부러 runOnUiThread를 빼고 해줬더니 역시나 문제가 발생하네요.

Exception Ljava/lang/RuntimeException; thrown while initializing Landroid/os/AsyncTask;
threadid=10: thread exiting with uncaught exception (group=0x40a461f8)
FATAL EXCEPTION: GLThread 4143
java.lang.Error: FATAL EXCEPTION [GLThread 4143]
Unity version     : 4.1.2f1
Device model      : Acer A500
Caused by: java.lang.ExceptionInInitializerError
at com.Test.unityandroidfacebookjar.MainActivity.PostToMeWall_U(MainActivity.java:152)
at com.unity3d.player.UnityPlayer.nativeRender(Native Method)
at com.unity3d.player.UnityPlayer.onDrawFrame(Unknown Source)
at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1462)
at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1216)
Caused by: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
at android.os.Handler.<init>(Handler.java:121)
at android.os.AsyncTask$InternalHandler.<init>(AsyncTask.java:607)
at android.os.AsyncTask$InternalHandler.<init>(AsyncTask.java:607)
at android.os.AsyncTask.<clinit>(AsyncTask.java:190)
5 more

 로그입니다. cocos2d-x jni 처리때 보던 로그와 많이 비슷하죠. 유니티3D에서 안드로이드로 보낸 메세지 처리는 제가 cocos2d-x 때 처리한것 처럼 Handler와 Message를 가지고 처리해도 되고

runOnUiThread(new Runnable(){
 public void run() {
               .....
 }
});
 아니면 위와 같이 runOnUiThread(new Ruunable() { 을 사용해도 됩니다. 이미 페이스북 이전에 연동했던 다른 SDK는 이걸로 연동해서 처리했었습니다.

댓글

이 블로그의 인기 게시물

'xxx.exe' 프로그램을 시작할 수 없습니다. 지정된 파일을 찾을 수 없습니다.

goorm IDE에서 node.js 프로젝트로 Hello World Simple Server 만들어 띄워보기

애드센스 수익을 웨스턴 유니온으로 수표대신 현금으로 지급 받아보자.