Cocos2d-x Plugin-X Google Play Game Services Publish 빌드중 에러

 Cocos2d-x 플러그인 시스템에 구글 플레이 게임 서비스 플러그인을 publish 빌드 중 아래와 같은 에러가 발생했습니다.



 android-support-v4.jar 파일의 Jar mismatch! Fix your dependencies 에러는 이미 페이스북 SDK를 유니티3D에 연동할 때도 같은 에러가 발생했던 에러라 익숙하긴 합니다. 아래와 같이 publish하는 ant 빌드 이전에 이클립스에서도 에러가 발생중이긴 했습니다. 하지만 Cocos2d-x 플러그인은 최종적으로 이클립스 빌드가 아닌 ant로 빌드를 하기 때문에 무시했었죠. 이하 내용을 처리하면 자동으로 해결될 에러입니다.



BUILD FAILED
d:\android\adt-bundle-windows-x86_64-20131030\sdk\tools\ant\build.xml:471: Inval
id file: D:\Android\android-samples-master\libraries\BaseGameUtils\build.xml

 이 에러는 이 구글 플레이 서비스 SDK에 포함 된 BaseGameUtils 라이브러리와 관련된 에러입니다. 플러그인에서 사용하는 서브 jar 라이브러리라 굳이 build.xml이 필요 없는데 빌드시 이걸 찾더군요. 일단 아래 그림과 같이 작업중인 LibPluginGPGSTest 라는 플러그인 프로젝트에서 BaseGameUtils 프로젝트를 Library에 추가시킨 상태였는데 이것을 Remove 시킨 후 다시 Publish.sh 를 실행하면 잘 되긴 합니다.



 Ant에서 빌드시에는 잘 되지만 수시로 이클립스에서 코드 작업을 해야할텐데 아래와 같은 에러가 발생해서 보기 좋지 않을 수 있죠.

Description Resource Path Location Type
GameHelper cannot be resolved to a type GPGSWrapper.java /LibPluginGPGSTest/src/org/cocos2dx/plugin line 10 Java Problem


 이 때는 작업중인 플러그인 폴더의 sdk 폴더에 복사해놓은 basegameutils.jar와 google-play-services.jar 를 Java Build Path에 추가해줍니다.




 google-play-services.jar를 추가하지 않으면 아래와 같은 에러가 발생할 수 있습니다.

Description Resource Path Location Type
The type com.google.android.gms.common.GooglePlayServicesClient$OnConnectionFailedListener cannot be resolved. It is indirectly referenced from required .class files GameServiceUser.java /LibPluginGPGSTest/src/org/cocos2dx/plugin line 1 Java Problem
The project was not built since its build path is incomplete. Cannot find the class file for com.google.android.gms.common.GooglePlayServicesClient$OnConnectionFailedListener. Fix the build path then try building this project LibPluginGPGSTest Unknown Java Problem


 이렇게 되면 이클립스에서도 에러가 없고 ant 빌드시에도 아래와 같이 이상 없을 것입니다.

이 블로그의 인기 게시물

CMake Windows에 설치하기

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

Unity3D 안드로이드 Keystore 생성하기