Unity3D facebook java.lang.NoClassDefFoundError: com.facebook.android.R$layout

 아래 내용은 임시 해결 내용으로 제대로 된 해결은 링크를 확인하시면 됩니다.

 이번 포스팅은 유니티3D 페이스북 안드로이드 연동 튜토리얼 포스팅을 올리기전 마지막 이슈 포스팅이 될 듯합니다.

D/AndroidRuntime(13471): Shutting down VM
W/dalvikvm(13471): threadid=1: thread exiting with uncaught exception (group=0x4001e578)
FATAL EXCEPTION: main
java.lang.Error: FATAL EXCEPTION [main]
Unity version     : 4.1.2f1
Device model      : samsung SHW-M250K
Device fingerprint: samsung/SHW-M250K/SHW-M250K:2.3.6/GINGERBREAD/FB22:user/release-keys
Caused by: java.lang.NoClassDefFoundError: com.facebook.android.R$layout
at com.facebook.LoginActivity.onCreate(LoginActivity.java:55)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667)
at android.app.ActivityThread.access$1500(ActivityThread.java:117)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:130)
at android.app.ActivityThread.main(ActivityThread.java:3691)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:847)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:605)
at dalvik.system.NativeStart.main(Native Method)
Force finishing activity com.Test.unityandroidfacebookjar/com.facebook.LoginActivity
Force finishing activity com.Test.unityandroidfacebookjar/.MainActivity

 제가 작성한 제목이나 unity3d 대신 mono로 대체해서 검색해보면 몇개의 포스팅을 검색할 수 있는데 제가 못 찾은건지 다들 안드로이드 순수 어플쪽 이슈더군요. 그래서 해결내용도 다 이클립스 기반의 것들이라 도움이 안 되었습니다.

 우연찮게 중국사람이 유니티3D에 페이스북 안드로이드 연동을 정리한 것을 찾았습니다. 거의 마지막에 해당 내용이 있는데 유니티3D로 일단 안드로이드 빌드 후 최종 참고 빌드 위치의 R.java를 일단 다른곳에 복사해서 기존에 있는 package 이름을 com.facebook.android로 바꾼 후 R.java를 컴파일 및 jar로 만듭니다.

 그리고 위 스샷과 같이 다른 jar 파일들처럼 Assets\Plugins\Android에 넣어줍니다. 그리고 빌드하면 된다고하는데 저는 여전히 안되더군요.

 다행인게 이 중국사람이 github에 자신이 사용했던 샘플을 올려놨더군요. 그래서 이사람이 만든 facebooksdk_R.jar 파일을 사용하니 잘 됩니다.

 제가 작업중이던 R.java(왼쪽)과 중국사람의 R.java(오른쪽)을 비교해봤습니다. final int 같은 페이스북 상수값들은 모두 다 같은데 스샷과 같이 html 태그 같이 생긴 부분에 패키지명만 다르더군요. 이거 뭐 어짜피 이 중국인도 맨 위 패키지만 com.facebook.android로 해놨기때문에 상관은 없을 듯 합니다.

 그래서 중국인이 만든 jar파일로 해결은 되었지만 오기가 생겨서 한번 더 해봤습니다. 중국인 R.java로 제가 컴파일 후 jar로 만들어 유니티에 넣어서 해봤죠. 결과는 안됩니다...;

 더 오기가 생깁니다. 제 이클립스 안드로이드 SDK가 4.2.2 즉 API 17용 뿐이 없어서 중국사람과 같은 환경에서 빌드할 수 있는 맥으로 옮겨서 2.3.3 API 10으로 다시 도전해봤지만, 역시 같은 오류... 뭐가 문제일까요? 일단 중국분이 만든 facebooksdk_R.jar를 가져다 사용해서 진행하는 걸로 마무리 합니다.

 이렇게 허접한 영어로 댓글을 하나 달아놨습니다. 답변해 주시길 기다려야겠네요.

댓글

이 블로그의 인기 게시물

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

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

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