2013.03.01 03:41

cocos2d-x에 JIN를 사용해서 C/C++ <-> Java 양방향 호출을 알아보기 전에 간단하게 JNI가 무엇인지 리서치 해본 것을 먼저 정리해보겠습니다.

Java에서 특정 플랫폼에서 실행 가능한 네이티브 코드에 접근하기 위해 만들어진 API를 JNI(Java Native Interface)라고 합니다. Java에는 이미 많은 모듈들이 있지만 이것으로는 구현할 수 없거나, 조금더 Low Level단 Hardware접근이나 Performance를 요구할 때 해당 플랫폼에 종속된 언어, 예를 들자면 C/C++ 로 구현 된 모듈에 접근할 때 사용한다고 하네요.

cocos2d-x에서 JNI를 사용해야 할 때는 언제일까요? 먼저 Java에서 C/C++ 로는 뭐가 있을까요? In App Purphase에 대한 정보를 Java에서 게임에 반영할 때라던지 디바이스의 특정 정보를 게임으로 넘겨줄 때 등등이 그렇겠네요.

반대로 C/C++ 에서 Java로의 예는 어떤 외부 광고 모듈이 Android용 Java와 iOS용 Objective-C로 만들어져 있을 때 cocos2d-x가 그렇듯 개발중인 프로젝트에 중간에 C/C++ 로 매핑시켜 iOS에서는 Objective-C가 Android는 Java가 호출 되도록 할 수 있겠네요.

자이제 cocos2d-x의 Helloworld 샘플에 JNI를 사용하는 간단한 샘플을 적용해 보겠습니다. 먼저 Java -> Native Code(C/C++) Call 입니다.

cocos2d-x의 HelloWorld 샘플을 이클립스로 열어 src -> org.cocos2dx.application의 ApplicationDemo.java를 엽니다.


public class ApplicationDemo extends Cocos2dxActivity{
private Cocos2dxGLSurfaceView mGLView;

protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);

if (detectOpenGLES20()) {
...
...

// Set framelayout as the content view
setContentView(framelayout);


///< native code call
nativeCppFunc();
}
...
}

///< native code func 선언
private native void nativeCppFunc();




ApplicationDemo의 onCreate에 native code를 call해주는 것을 맨 마지막에 넣어주고 native code func 정의를 추가합니다. 다음으로 Classes\HelloWorldScene.cpp를 수정해야합니다.

///< JniHelper를 추가
#include "platform/android/jni/JniHelper.h"


#ifdef __cplusplus
extern "C" {
#endif

/**
native code 함수 정의는
리턴 타입 Java_packagename_classname_functionName(JNIEnv* env, jObject thisObj, parameters)로 한다.
Java, packagename, classpath, functionName간에는 _ 로 구분지어준다.
functionName은 Java와 같아야한다.
*/
void Java_org_cocos2dx_application_ApplicationDemo_nativeCppFunc(JNIEnv* env, jobject thisObj)
{
CCMessageBox( "Call me From Java", "JNI Test" );
}

#ifdef __cplusplus
}
#endif


위와 같이 c++코드를 추가합니다. 단순히 MessageBox를 호출하는게 다입니다. 이제 Cygwin으로 build_native하고 이클립스에서 빌드 후 실행하면,

잘 작동하네요. 제 폰에서 구동한 스샷입니다.

여기서 잠깐 오류상황 하나 나왔던 것에 대해 끄적거려봅니다.




09-26 11:10:20.964: W/dalvikvm(12593): No implementation found for native Lorg/cocos2dx/application/ApplicationDemo;.nativeCppFunc (II)I
09-26 11:10:20.964: D/AndroidRuntime(12593): Shutting down VM
09-26 11:10:20.964: W/dalvikvm(12593): threadid=1: thread exiting with uncaught exception (group=0x40a6b1f8)
09-26 11:10:21.129: E/AndroidRuntime(12593): FATAL EXCEPTION: main
09-26 11:10:21.129: E/AndroidRuntime(12593): java.lang.UnsatisfiedLinkError: nativeCppFunc


구글링을 해보니 java.lang.UnsatisfiedLinkError 는 보통 native library path가 정상적으로 설정되지 않아 파일을 못 찾았을 때 나타나는 예외라고 하더군요. 제 경우는 첨 JNI를 접하다보니 사용하는데 있어 코드상 제대로 bind를 못해줘서 오류가 발생한 것입니다.

void Java_com_org_cocos2dx_application_ApplicationDemo_nativeCppFunc(JNIEnv* env, jobject thisObj)
처음에는 이렇게 해줬는데 com을 빼줘야 하더군요.

void Java_org_cocos2dx_application_ApplicationDemo_nativeCppFunc(JNIEnv* env, jobject thisObj)

이렇게 말이죠.


이제 Native Code(C/C++) -> Java Call 입니다.


public static void JavaJniTestFunc()
{
Log.d("JNITest", "Success Java Func Call!");
}

ApplicationDemo.java에 간단히 로그를 남기는 static 함수를 추가합니다.


void HelloWorld::menuCloseCallback(CCObject* pSender)
{
/*
CCDirector::sharedDirector()->end();

#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
exit(0);
#endif
*/
JniMethodInfo t;
/**
JniHelper를 통해 org/cocos2dx/application/에 있는 ApplicationDemo class의 JavaJniTestFunc함수 정보를 가져온다.
*/
if (JniHelper::getStaticMethodInfo(t
, "org/cocos2dx/application/ApplicationDemo"
, "JavaJniTestFunc"
, "()V"))
{
///< 함수 호출
t.env->CallStaticVoidMethod(t.classID, t.methodID);
///< Release
t.env->DeleteLocalRef(t.classID);
}
}
HelloWorldScene.cpp에서 close버튼 처리부분을 주석으로 막고 Jni관련 소스를 추가합니다. 이제 close버튼을 누르면 Java소스가 호출이 됩니다.



이렇게 로그가 찍힌 걸 볼 수 있습니다.

좀 더 자세한 것은 cocos2d-x How to use jni를 참고하셔도 되고 cocos2d-x가 구현한 소스를 참고하셔도 됩니다. 소스는

cocos2dx\platform\android\jni 의 jni파일과 cocos2dx\platform\android\java\src_common\org\cocos2dx\lib 그와 관련 된 cocos2d-x의 java파일을 참고하시면 좋습니다. 아니면 CocosDenshion에 있는 SimpleAudioEngine과 그와 관련 된 Android파일을 참고하셔도 됩니다.

간단하게 cocos2d-x HelloWorld 샘플에 JNI를 붙여봤습니다. 이제 저는 처음에 언급했던 C++ -> Java에 대한 것을 지금 진행중인 Framework에 붙여보는 일이 남아있네요. 진행하면서 나오는 이슈들도 계속해서 정리해보겠습니다.

 

출처 : http://westwoodforever.blogspot.kr/2012/09/cocos2d-x-jni-android-native-codecc-java.html 

신고
Posted by 우엉 여왕님!! ghostkyow
2013.02.13 20:01

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을 하면,

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

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

신고
Posted by 우엉 여왕님!! ghostkyow
2013.02.13 17:28

이번엔 xCode에서 작성한 소스코드를 별도의 클레스의 복사없이 사용할 수 있도록

 

ios프로젝트와 android 프로젝트를 퓨전시킬 것 입니다.

 

 

서로 다른 프로젝트 파일을 한폴더에 넣어 같은 소스코드와 리소스를 참조하게 만들어줍니다.

 

안드로이드에선 Classes 폴더의 cpp파일들을 so파일로 만들어 라이브러리로 복사해 사용하고

 

Resources 폴더의 리소스들을 복사해 assets 폴더에 복사해 이클립스로 apk 파일을 만듭니다.

 

간단하게 보면 이런식으로 통합프로젝트를 만들면 됩니다.

 

 

 1. ios프로젝트 위치확인


 ios 프로젝트가 있는 폴더의 위치를 확인만 합니다.

 



저는 도큐먼트에 workspace라는 폴더안에 있습니다.

 

 

2. cocos2d-x android project 생성

 

cocos2d-x 안드로이드 프로젝트를 생성하도록 하겠습니다.

 

 

터미널을 실행시킵니다.

 

cocos2d-x가 설치되어있는 폴더(라이브러리 폴더에 이전에 복사해놓았죠)로 이동합니다.

 

그다음 ./create-android-project.sh 라고 입력합니다.





사용가능한 안드로이드 버전이 4.2 밖에 안나오는군요.

여러버전의 안드로이드 SDK를 받으면 나옵니다.

안드로이드2.2버전으로 생성해보도록 하겠습니다.

 

이클립스를 실행합니다.

상단의 window - Android SDK Manager를 실행합니다.

업데이트 받을 수 있는 SDK들이 보입니다.

 

저는 2.2버전으로 생성할것이니 2.2버전만 받도록 하겠습니다.

 

2.2 버전을 체크한뒤 우측 하단의 Install 3 packages...를 선택하여 설치합니다.





라이센스에 동의해주시고 Install~

 

설치가 완료되면 다시 터미널에서 ./create-android-project.sh 라고 입력해줍니다.

 

아까와는 다르게 사용가능한 안드로이드 sdk들이 추가됬습니다.

 

구글맵을 사용할것이 아니니 저는 target id 를 1이라고 선택해주었습니다.

(사용자의 환경에 따라 다른부분이니 스크롤을 올려 확인하시고 target id를 입력하시면 됩니다.)






프로젝트명을 입력하라고 나옵니다.

이때 아이폰 프로젝트명하고 일치시키도록 합니다.

(저는 오타가나서 NomberGame이라고 만들었으니 그냥 놈버게임으로 만들겠습니다. ㅋㅋㅋ)



주르르륵 하면서 뭔가 막 파일을 추가합니다. 

 

라이브러리폴더안에 cocos2d-x폴더로 들어가보시면 방금 추가한 프로젝트이름의 폴더가 생겨있습니다.

 

아래 그림처럼 하위폴더엔 Classes 와 proj.android, Resources 폴더가 생성되었습니다.




이중에서 Classes폴더와 Resources폴더는 사용하지 않을 것입니다.

(xCode 프로젝트에 있는 폴더와 매핑시킬 것이므로.)

 

proj.android 폴더만 복사하여 xCode에서 생성한 프로젝트에 복사하여 줍니다.

(Classes와 Resources 폴더와 동일 경로에 위치해야 합니다.)




3. ios소스에서 android 라이브러리(.so) 생성

ios로 헬로월드를 실행한 파일이 있으므로 그파일로 바로 빌드하여 .so파일을 생성하여 안드로이드에 올려보도록 하겠습니다.

터미널에서 프로젝트의 proj.android 폴더로 이동합니다.

 

./bulid_native.sh 를 입력해줍니다.

(안드로이드에서 쓸수 있도록 빌드해주는 파일입니다.)





에러가 나서 Stop됬네요.

 

저는 터미널보단 xCode로 내용을 보는게 편하니

 

build_native.sh 파일을 찾아 xCode로 열어줍니다.

 

열어 보시면 여러 경로들이 표시되어있습니다.

 

이전에 옮겨놓은 경로와 같은지 확인해봅니다.

 

 

COCOS2DX_ROOT 경로가 잘못되어있군요.

 

아래 그림과 같이 고쳐줍니다.(파인더에서 제목표시줄의 폴더를 끌어다놓으면 바로 똭!! 됩니다.)




수정이 완료되었으면 command + s를 눌러 저장을 해주고

 

터미널로 다시 이동하여

 

./build_native.sh 를 실행해줍니다.






뭔가 막 하고있다는 모습이 보인다음 정상적으로 완료가 되었습니다.

 

 

4. 안드로이드 프로젝트 추가 / 실행

 

이제 이클립스에 프로젝트를 추가한다음 실행해보도록 하겠습니다.

 

이클립스를 여시고 좌측 패키지 익스플로러에서 오른쪽 클릭 Import...를 선택해줍니다.






우리는 프로젝트가 이미 있으니
android - Existing Adnroid Code Into Workspace 를 선택해줍니다.

 

그다음 proj.android 폴더를 찾아 열기를 눌러줍니다.






안드로이드로 불러올 준비가 되었습니다. Finish를 눌러 추가해줍니다.



에러가 나네요.

org.cocos2dx.lib 에 뭔가 없다고 하네요.

패키지 익스플로러를 보면 org.cocos2dx패키지가 아애 비어있네요.

 

 

경로가 어려우니 잘 따라오시기 바랍니다.

 

라이브러리에 cocos2d-x(cocos2d-x의 루트) 안에 cocos2dx/platform/android/java/src/org/cocos2dx/lib 폴더로 이동하여 lib폴더를 통채로 복사합니다.

 

(제 경로는  Libraray/cocos2d-2.0-x-2.0.4/cocos2dx/platform/android/java/src/org/cocos2dx/lib  입니다.)

 

lib 폴더를 proj.android/src/org/cocos2dx/ 여기에 붙혀넣습니다.

(proj.android/src/org/cocos2dx/lib/"java파일들" <<<이렇게 위치해야합니다.)





패키지 익스플로러에서 패키지를 선택한뒤 f5(refresh) 버튼을 눌러줍니다.


 

 

그다음 Project - clean 을 한번 해줍니다.

이제 패키지를 오른쪽 선택하고 Run As - Android Application 을 눌러 에뮬레이터로 실행해보도록 하겠습니다.


 

 

오류가 나면서 죽어버리네요.

에뮬레이터에서 일정버전 이상에서 뭐였더라 지원을 안하는게 있어서 재대로 동작하지 않습니다.

 

안드로이드 디바이스에 직접 넣어보면 재대로 헬로월드가 보이는 것을 알 수 있습니다.


 

 

이미지가 작게나오거나 잘려나오는 이유는 ios와의 해상도 차이때문입니다.

 

이부분은 개발하면서 맞춰주면 됩니다.

 

 

이로써 안드로이드 아이폰 모두 퍼블리싱 할 수 있는 개발 환경 구성과 cocos2d-x 통합 프로젝트 생성을 완료하였습니다.

 

 

세세하게 캡쳐이미지로 볼 수 있도록 작성해 보았습니다.

NomberGame이 자꾸 걸리긴 하지만 그냥 가도록 하겠습니다. ㅋㅋㅋ

 

다음 강좌부터 직접 코딩을 시작하도록 하겠습니다.


|작성자 우리집드래곤뽀삐

신고
Posted by 우엉 여왕님!! ghostkyow
2013.02.13 17:27

1. 준비한 라이브러리들 PATH 설정

 

독에서 로케트 모양의 Launchpad - 유틸리티 - 터미널을 실행합니다.   [  > _ ]  이런 모양의 아이콘입니다. ㅋㅋ

 

그리고 $ 표시 뒤에 

 

vi .bash_profile 이라고 입력해줍니다.

그러면 터미널이 글씨를 쓸 수 있는 화면으로 바뀝니다.

 


 

오타에 조심하면서 아래와 같이 입력하여줍니다.

(그림처럼입력하시면 됩니다. 복사하여 쓰시라고 타이핑도 했습니다. 오타가 있을지 모르니 꼭 이미지랑 비교해보도록 합니다. 오타있으면 답글로 알려주세요.)

 

export ANDROID_SDK_ROOT=""

 

export PATH="$PATH:$ANDROID_SDK_ROOT/tools"

 

export ANDROID_NDK_ROOT=""

 

export COCOS2DX_ROOT=""

 

export NDK_ROOT=""

 

export PATH=$PATH:$ANDROID_NDK_ROOT

 

export PATH=/opt/local/bin:/opt/local/sbin:$PATH

 



그다음 비어있는 ANDROID_SDK_ROOT와 COCOS2DX_ROOT, NDK_ROOT 를 설정해줄건데요.

 

오타가 날수있으니 저처럼 추가하시기 바랍니다.

 

ANDROID_SDK_ROOT의 괄호 안에 커서를 가져다 놓은다음

 

라이브러리에 이동해놓은 android SDK 폴더를 찾아갑니다.

(다른곳에 놓으신 분은 해당 폴더로 이동하시면 됩니다.)

 

아래 그림과 같이 SDK 폴더를 선택해놓습니다.

 

그다음 파인더 창의 폴더아이콘(파인더 내부 말고 상단의 제목 표시줄에 있는 폴더아이콘 입니다.)을 1~2초정도 누르고 있으면 폴더가 빠집니다. 

 

이폴더를 터미널에 끌어다 놓으면 경로가 한방에 똭!! 복사가 됩니다.



COCOS2DX_ROOT와 NDK_ROOT의 경로도 같은 방법으로 추가해놓습니다.



그다음 esc를 누른다음 : 를 눌러줍니다(시프트 누르고 눌러주세요.)

 

그러면 명령어를 칠 수 있는 라인이 하단에 생기는데요.

 

wq 를 입력하고 엔터~

 

wq는 쓰고 저장입니다.

 

q는 그냥 나가는거고요.




wq를 입력하면 터미널 화면으로 돌아오는데요.

 

재대로 저장이 됬는지 확인을 위해

 

vi .bash_profile 을 입력 해 봅니다.

 

위쪽 화살표를 눌르면 이전에 입력했던 명령어를 바로 불러올 수 있습니다.



재대로 들어있네요.

 

: q 를 입력하여 빠져나옵니다.

방금 작성한 파일을 시스템에 씌울 껍니다.

 

source ~/.bash_profile 이라고 입력합니다.



이제 우리가 설정한 PATH가 시스템에 설정됬습니다.

 

 

2. cocos2d-x xCode 템플릿 설치

 

cocos2d-x 라이브러리에 포함된 xCode 템플릿을 설치합니다.

 

터미널에서 cd / 을 입력하여 루트로 이동합니다.



ls 를 입력하여 폴더를 봅니다.(dos의 dir 명령어와 동일)

 

cd Libraray/cocos2d-2.0-x-2.0.4/  폴더로 이동합니다.

  - 다른곳에 cocos2d-x라이브러리를 옮겨놓으신 분은 해당폴더로 이동합니다.

  - 상단의 PATH 입력중 파인더에서 끌어다 놓은것처럼 입력하셔도 됩니다.

  - 명령어 입력도중 Tab키를 누르면 자동완성이 됩니다. 같은 글자로 시작하는 폴더나 파일이 있으면 해당 글짜까지만 자동완성되요.

 

cocos2d-x가 있는 폴더로 이동하였으면 sudo ./install-templates-xcode.sh 라고 입력해줍니다.



패스워드 입력하는 부분이 나오는데 맥 시스템 패스워드를 입력해줍니다.

 

화면에 표시가 안되니 타이핑하고 그냥 엔터치시면 됩니다.



패스워드를 입력하면 xCode 템플릿이 설치됩니다.






3. xCode 프로젝트 생성


설치가 재대로 완료되면 xCode를 실행합니다.

 

xCode에 온것을 환영한데요.

 

왼쪽의 Create a new Xcode project 를 선택합니다.



그러면 프로젝트를 선택 할 수 있는 팝업이 나오는데요.

 

왼쪽을 보시면 cocos2d-x 항목이 있는데요.

 

이부분을 선택해줍니다.



그러면 우측에 cocos2d-x 관련 프로젝트들을 생성할 수 있습니다.

 

cocos2dx를 선택하고 next를 선택합니다.



프로젝트를 생성 할 수 있는 화면이 나왔군요.




프로젝트 이름을 세팅합니다.

(NumberGame을 만들기로했으니 NumberGame이라고 만들겠습니다. 저는 오타가나서 놈버게임이 됬군요...ㅋㅋㅋㅋ 귀찮으니 그냥 가겠습니다.)

 

Company Identifier를 입력해줍니다. 저는 안드로이드 패키지명처럼 입력해주었습니다.

문제없이 동작하더라구요 ㅋㅋㅋ




저장위치까지 설정해줍니다.

 

저는 도큐먼트에 workspace라는 폴더에 추가했습니다.

(어디에 저장했는지 잘 기억하시기 바랍니다.)

xCode의 좌측에 프로젝트가 생겼네요.

놈버게임이 계속 거슬리긴 하지만 그냥 이대로 갑니다.




좌측상단의 Run을 눌러봅니다.



개발자모드를 사용하겠냐고 묻네요.

네, 저는 개발자입니다. 사용합니다.




아놔. 뭔가 에러가 14개나 생겼어요.

tip : 일단 에러가 발생하면 클린부터 한방때려봅니다. 클린하면 그냥 되는경우가 꽤됌




자 그래도 안되네요. 무슨에러인지 확인합니다.

아는 에러니까 잡아보겠습니다.

 

뭐 폴더를 못만들었데요. 이런에러의 대부분은 권한입니다.

 

터미널을 열어

sudo chown "사용자명" /Users/"사용자명"/Library/Developer/Xcode/

라고 입력해줍니다.

 

권한을 주는 명령어입니다.




패스워드를 입력하라네요.

입력합니다.

 

오오!!

 

헬로월드가 나왔습니다.

 

xCode 에 템플릿 설치가 완료되었습니다.

 

다음은 아이폰 안드로이드 크로스 플레폼 적용을 위한 통합 프로젝트를 생성해보도록 하겠습니다.


|작성자 우리집드래곤뽀삐

신고
Posted by 우엉 여왕님!! ghostkyow
2013.02.13 17:27

이번엔 안드로이드 개발환경을 세팅해보도록 하겠습니다.

 

1. 라이브러리 정리

 

이전 포스팅에서 설명했다시피 android SDK에 이클립스가 포함되어있습니다.

 





요 이클립스 폴더를 좌측의 응용 프로그램 폴더로 이동시켜줄 것입니다.

 

일단 파인더에서 오른쪽 버튼을 눌러 새로운 스마트윈도우를 선택해 파인더를 하나더 열어준뒤 좌측의 메뉴에서 응용 프로그램을 선택한다음 드래그앤 드롭으로 옴겨주시면 되겠습니다.




상단의 이미지 처럼 위치하면됩니다.

(응용프로그램에 놓기 싫으신분은 다른데 놓으셔도 상관은 없습니다.)

그다음 위의 이클립스 실행파일을 독으로 끌어다 놓습니다.

(안드로이드에 들어있는 이클립스는 아이콘이 다르군요 ㅋㅋ 키위 같습니다.)

 


다음으로 cocos2d-x 와 android SDK, android NDK를 루트의 라이브러리에 위치하도록 하겠습니다.

(여기다 놓는 이유는 파일 경로가 길어지면 경로설정에서 햇갈릴 수 있습니다. 다른곳에 놓으셔도 상관은 없습니다만 경로를 꼭 기억해주세요.)



위 그림과 같이 위치하면 됩니다.

(최상위로 이동한다음 하드디스크로 들어오면 라이브러리 폴더가 존재합니다. 상위 폴더로 이동시는 커멘드 + 위쪽 화살표 입니다.)


아까 독으로 끌어다 놓은 이클립스를 실행합니다.



위와같은 업데이트 팝업이 나오면 설치해줍니다.




설치가 진행되고~



업데이트가 완료되었습니다.

 

다시 이클립스를 실행해줍니다.




이런 ㅋㅋ

앱스토어에서 받은것이 아니라 실행을 안하겠다고 버팁니다.

 

자 이제 이클립스를 실행하도록 우리 맥킨토시님을 달래보도록 하겠습니다.

 

독 부분에서 네모난 톱니바퀴를 아이콘의 시스템 환경설정을 찾아 실행합니다.

 

 

 

여기에서 맨 윗줄 라인에서 보안 및 개인 정보를 찾아 선택합니다.




위와 같이 나오는데요.

 

우리가 변경해야할 부분은 다음에서 다운로드한 응용 프로그램 허용 부분입니다.

 

지금 수정할 수 없는데요. 왼쪽 아래의 변경하려면 자물쇠를 클릭하십시오. 를 눌러주시고 비밀번호를 입력하시면

 

수정이 가능합니다.




모든 곳을 선택하여 인터넷에서 받은 어플리케이션도 실행가능하도록 합니다.

 

 

다시 이클립스를 실행하면 보안 팝업과 함께 아까와는 다른 버튼이 보입니다.

 

열기를 선택하여 이클립스를 열어줍니다.






맨날 쓰던 로고가 아니니 생소하네요.



워크스페이스 위치를 잡아주고요.



안드로이드 sdk 가 없다네요.

 

이전에 받아놓은 파일이 있으므로

 

close를 선택합니다.

 




Use existing SDKs를 선택한뒤

 

미리 받아놓은 sdk경로를 찾아 sdk경로설정을 해줍니다.(ndk 아닙니다~ android sdk입니다.)


자주보던 이클립스 화면이 나왔네요.

 

developer tools를 설치 하도록 하겠습니다.

 

Help - Install New Software 를 선택합니다.



Work with에

 

http://dl-ssl.google.com/android/eclipse/를 입력하도록 합니다.

(맨뒤에 / 까지 포함하도록 합니다.)




Developer Tools를 체크해준뒤 Next를 선택합니다.



뭐가 설치되는지 확인하시고 Next.



라이센스 동의하신다음 Finish를 선택하면 

 

Developer Tools가 설치됩니다.

 

 

안드로이드가 재대로 설치 되었는지 확인해보도록 하겠습니다.

 

file - new - android application project를 선택합니다.



어플리케이션 이름과 프로젝트네임 타겟 sdk등

대충 설정만 해줍니다.

어짜피 잘되는지만 볼거니까요.




Next~



이런거도 생겼네요.

아이콘 설정을 하고 Next



액티비티 테마를 정하는 건가 봅니다.

대충 정한다음 Next



엑티비티 이름을 정해준다음 Finish!!



프로젝트가 생겼네요.



프로젝트에서 오른쪽버튼을 클릭한뒤 Run As - Android Application을 선택합니다.



AVD(안드로이드 가상디바이스)가 없다네요 Yes를 선택하여 새로 만들어줍니다.

 

AVD이름을 적은다음 타겟을 설정하면 쉽게 만들 수 있습니다.

AVD를 만든뒤 AVD로 프로젝트를 돌립니다.



 

재대로 나오네요.

 

안드로이드 환경설정이 끝났습니다.

 

다음은 xCode에 cocos2d-x 템플릿을 설치하여 프로젝트를 생성해보도록 하겠습니다.


|작성자 우리집드래곤뽀삐

신고
Posted by 우엉 여왕님!! ghostkyow
2013.02.13 17:26

1. xCode 설치하기(이미 설치되어있다면 건너뛰시면 됩니다.)

 

먼저 app store에 접속하여 xcode를 검색합니다.

 



xCode를 설치하시고요. 비밀번호를 입력하라고 나오면 입력하시면 됩니다.



앱이 설치되면 파인더 오른쪽의 로케트모양의 Launchpad로 들어가게 됩니다.

다운로드중엔 프로그레스바가 보입니다.

설치가 완료되면 xCode를 드래그하여 Dock으로 끌어다 놓도록 합니다.


2. Cocos2d-x 다운로드

 

www.cocos2d-x.org 에 접속하도록 합니다.




cocos2d-x에 대한 정보를 볼 수 있습니다.

혼두라가 출시되었네요. ㅎㅎㅎ

일단 cocos2d-x 로고의 하단에 Download 메뉴로 들어가도록 합니다.

(링크를 직접 안걸어놓은이유는 신버전이 나왔을때 신버전으로 다운받으시라고 링크를 직접 걸어놓지 않았습니다.)



cocos2d-x에 대한 여러가지의 버전이 있는데요. 제가 블럭처리 해놓은 부분을 선택하여

cocos2d-x를 다운로드 하도록 합니다.(위쪽에 더높은 버전이 있는데 베타라서 저는 정식버전으로 받도록 하겠습니다. 베타를 받으셔도 상관없습니다.)


3. android SDK(이클립스) 다운로드

 

android SDK를 다운로드 하도록 하겠습니다.

 

http://developer.android.com/sdk/index.html 로 접속하도록 합니다.

 

Download the SDK 를 선택하여 android SDK를 다운로드 하도록합니다.

(안드로이드 sdk에 이클립스가 들어있더라구요. 그래서 따로 다운로드 하지않고 sdk에 포함된 이클립스를 이용하여 개발환경을 세팅하도록 하겠습니다. 직접 이클립스를 다운받으셔도 상관은 없습니다.)

 



다음으로 좌측메뉴에서 Download the NDK 를 선택하여 NDK를 다운로드 하러 갑니다.

 

스크롤을 조금만 내려보면 Downloads 항목안에 윈도우즈, 맥, 리눅스용 NDK가 있습니다.

 

우리는 맥환경 세팅중이니 맥용으로 다운로드 하도록 하겠습니다.

 

 

여기까지 따라오셨다면 xCode가 설치되어있고

 

cocos2d-x 라이브러리와 android SDK, 이클립스, android NDK

 

이렇게 4가지가 준비되어 있을 것입니다.

 

 

다음은 다운로드한 라이브러리들에 대해 경로설정과 툴설정을 해보도록 하겠습니다.


작성자 우리집드래곤뽀삐

신고
Posted by 우엉 여왕님!! ghostkyow

티스토리 툴바