cocos2d-x Mac OSX에 Android 개발 환경 설정하기

 맥에 안드로이드 개발 환경을 세팅했고 역시나 맥에 cocos2d-x기반 iOS 개발 환경까지 설정했었습니다. 이 기반에서 맥에 cocos2d-x 안드로이드 개발 환경을 세팅을 정리해보겠습니다. 2가지 링크가 다 되어 있어야 합니다. 또한, 이슈가 몇개 있어서 내용이 다소 복잡할 수 있습니다.


1. 안드로이드 프로젝트 생성

 먼저 cocos2d-x 디렉터리에 있는 create-android-project.sh를 수정해야합니다. NDK_ROOT_LOCAL과 ANDROID_SDK_ROOT_LOCAL을 자신의 디렉터리에 맞게 변경해줍니다. 예전에는 vi .profile 해서 bash 프로파일을 수정했는데 이젠 그렇게 안해도 되나보군요.

NDK_ROOT_LOCAL="/Volumes/Macintosh HD 2/Android/android-ndk-r8d"
ANDROID_SDK_ROOT_LOCAL="/Volumes/Macintosh HD 2/Android/android-sdk-macosx"

 제 설정은 위와 같습니다. 이제 터미널에서 ./create-android-project.sh를 실행해보면,

 제대로 만들어지지 않았습니다. 먼저 Permission denied가 나올 수 있는데 chmod 777 create-android-project.sh 를 해줍니다.

./create-android-project.sh: line 16: [: too many arguments
./create-android-project.sh: line 111: [: too many arguments
mkdir: /Volumes/Macintosh: File exists
mkdir: 2/Program/Engine/cocos2d-2.1beta3-x-2.1.0: No such file or directory
Error: Argument '2/Program/Engine/cocos2d-2.1beta3-x-2.1.0/helloworld/proj.android' is not recognized.

 다음으로 위 로그가 눈에 거슬리는군요. 디렉터리 부분을 보니 Macintosh HD 2가 공백부분이 제대로 인식이 안되 2로만 인식이 되서 생긴문제인 듯 합니다. 파티션 나눌 때 자동으로 설정한 이름으로 했더니 역시 개발환경 설정에서 디렉터리명은 한글이나 공백은 아닌듯 하군요. 하드의 볼륨명을 변경(MacintoshHD2) 후 다시 하니 잘 되는군요. 공백을 인식하게 해줄려면 \ 로 해서 해주면 되는 것 같습니다.

 이상이 없다면 Input package path에는 자바 패키지명을 input target id는 안드로이드 타겟 아이디를 input your project name 프로젝트명을 기입해줍니다. 전 com.my.test, 1, helloworld 로 기입했습니다.

 helloworld가 생성되었습니다.


2. Native Build

 이제 c++ native 빌드를 위해 build_native.sh를 터미널에서 실행해보면,

 이번에는 NDK_ROOT를 이상한 곳에서 찾는군요. 하드 레이블도 바꾸기 전 위치에서 지정되어 있습니다. 원인은 위에서 언급했던 bash 프로파일이 문제였습니다. 배쉬 프로파일을 확인하기 위해 터미널에서

cd ~
vi .bash_profile

 위와 같이 입력 후 보니,

 이렇게 되어있네요. 몇달전에 입력해놨던 배쉬 프로파일입니다. 삭제하고 저장 후 다시 해봤지만 마찬가지로 안되더군요.


NDK_ROOT="/Volumes/MacintoshHD2/Android/android-ndk-r8d"

 그래서 위와같이 build_native.sh에 추가를 해줬습니다. 저처럼 구버전 한번 설정하고 난 뒤 하는게 아니라면 이런 이슈는 없을 듯 하네요.

 다시 터미널에서 ./build_native.sh 실행 후 드디어 native 빌드 성공했습니다.


3. Java Build and Run

 이클립스를 실행 후 File -> New -> Project 또는 command + N 키를 누릅니다.

 Android -> Android Project from Existing Code를 선택 후 Next를 클릭합니다.

 Browse를 눌러 만들었던 helloworld 프로젝트의 proj.android 디렉터리를 선택 후 Finish를 프로젝트 임포트를 마무리합니다.


Description Resource Path Location Type
Cocos2dxActivity cannot be resolved to a type helloworld.java /helloworld/src/com/my/test line 33 Java Problem
error: Error: No resource found that matches the given name (at 'icon' with value '@drawable/icon'). AndroidManifest.xml /helloworld line 9 Android AAPT Problem
Cocos2dxActivity cannot be resolved to a type helloworld.java /helloworld/src/com/my/test line 30 Java Problem
The import org.cocos2dx.lib cannot be resolved helloworld.java /helloworld/src/com/my/test line 26 Java Problem

 단순히 임포트만 했는데 에러가 발생하네요. 구버전은 이렇지 않았는데 말이죠.
 원인은 스샷에 보이는데 src/org.cocos2dx 부분이 비어있네요. 전에는 cocos2d-x java 관련 파일들도 자동 복사해서 프로젝트를 생성하더니만 버전업하면서 안해주는 것 같네요. cocos2d-x java를 임포트해야 합니다.

 File -> Import를 선택합니다.

 General -> Existing Projects into Workspace를 선택합니다.

 cocos2d-x가 설치된 디렉터리의 cocos2dx/platform/android/java 디렉터리를 선택 후 Finish 합니다.

 이제 AndroidMenifest.xml 쪽 에러를 수정해줍니다. drawable/icon에서 문제가 발생했는데,

 자동 생성된 drawable 관련 png가 모두 ic_launcher.png 네요. 이것도 예전에는 icon.png 였는데... 업데이트 마다 이런 사소한 문제를 일으키는군요. xml에 ic_launcher 로 수정해줍니다.

 이제 F5 키를 눌러 갱신을 한번 해주면 에러가 모두 사라질 것입니다.

 이제 디바이스에서 실행을 하기위해 Build를 하신 후 Run -> Run As -> Android Application을 클릭합니다.

 Run Configurations에 보면 추가한 프로젝트가 보입니다. Target 탭에서 실행 대상에 Active devices로 선택 후 Run을 하면,

 디바이스에서 실행이 됩니다. 태블릿에서 실행해봤습니다.

 언제나 그렇듯 이슈가 나오면 나오는데로 정리를 해서 기본적인 부분인데도 불구하고 아마 다른 블로거분들보다 내용이 길어진 것 같습니다. 지금까지 읽어보시느라 고생하셨습니다.

댓글

댓글 쓰기

이 블로그의 인기 게시물

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

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

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