cocos2d-x android PREBUILT_STATIC_LIBRARY 만들어서 작업하기

이전 포스팅에서 cocos2d-x에 static lib를 만들어서 사용하는 것을 정리했었는데요, 만들 lib를 배포용으로 하기에는 뭔가 반쪽짜리 내용이었습니다. 왜냐면 각 게임마다 static lib로 만든 framework 원본 폴더를 필요로 하기 때문이죠. 마치 win32 플젝 진행할 때 하나의 솔루션에 필요 lib의 프로젝트까지 읽어다가 종속성 포함시켜 개발하는 것 처럼요. 이렇게 하면 굳이 static lib로 만든 의미가 없어지죠... cpp가 다 노출이 되니...해서 이번에야 말로 h파일과 확장자 a인 lib파일만으로 빌드 할 수 있게 구성해 보았습니다.

일단 기존 static lib로 빌드시에 만들어진 obj/local/armeabi/libframework.a를 저는 Libs/Framework/android/armeabi/ 에 파일을 복사해 넣었습니다. 원래는 Framework를 따로 ndk-build해서 해야하는데 이렇게 해도 되고, 따로 ndk-build는 아직 안해봤네요. Framework SDK상위 폴더인 include에는 Engine/Framework/ 의 하위폴더와 같은 구조로 h 파일들만 들어가 있구요.

여기서 잠깐, batch file로 h파일만 복사하던 것에 대한 포스팅이 있었는데요 막상 pribuilt_static_library로 진행하다보니 포스팅 내용과는 다르게 폴더구조까지 해서 h 파일을 복사해야 했습니다. framework 내부에서나 이것을 사용하는 게임에서 framework 파일들 include관련 된 것을 제가 하위 폴더까지 포함 디렉토리까지 안하고 Framework 이 부분만 포함하고 했더니 sdk폴더에도 폴더구조가 필요했던거죠. 즉, Framework/ 에는 여러 하위 폴더가 있고 그중에 Framework/abc/def.h 가 있다면 전 Framework만 포함 폴더라서 include abc/def.h 이런 식으로 했다는 야기 입니다. 결론은 아래와 같이 batch file의 내용 변경이 있었습니다.

xcopy *.h ..\..\Libs\Framework\include /s/y

이제 PREBUILT_STATIC_LIBRARY용 Android.mk를 만들어야 합니다. cocos2d-x안의 third_party/android/ 안에 있는 아무것의 Android.mk를 Libs/Framework/android/ 폴더에 일단 복사했습니다.


LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := framework_static

LOCAL_MODULE_FILENAME := libframework

LOCAL_SRC_FILES := $(TARGET_ARCH_ABI)/libframework.a

LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/../include

include $(PREBUILT_STATIC_LIBRARY)

전 libcurl의 것을 복사해서 수정했는데요 내용은 위와 같습니다. 각자의 프로젝트에 맞게 수정하시면 됩니다. 이것을 lib가 들어있는 Libs/Framework/android/ 폴더에 저장했습니다.

이제 마지막으로 게임 프로젝트에서 pribuilt를 참고하도록 Android.mk를 수정하면 됩니다.


#pribuilt lib framework_static 추가
LOCAL_STATIC_LIBRARIES := curl_static_prebuilt framework_static

#기존 engine/framework 를 포함하던 것을 sdk폴더로 교체

LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes \
                    $(LOCAL_PATH)/../../../../Libs/Framework/include


#기존 static lib를 지정하던 것을 역시나 sdk폴더로
$(call import-module,$(COCOS2DX_ROOT)/../../Libs/Framework/android)

위와 같이 게임용 Android.mk를 수정 후 아무 문제 없다면 빌드가 성공합니다.

드디어 sdk쓰듯이 만들어진 h, o 파일을 다른 사람과 같이 쓸 수 있는 환경이 구성 되었습니다.

댓글

이 블로그의 인기 게시물

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

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

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