cocos2d-x 2.2.0 Build Issues
cocos2d-x 2.x 버전중 가장 최신인 2.2.0를 가지고 샘플을 빌드 중 몇가지 처음 격어보는 에러들이 발생해서 정리해봅니다.
1. NDK_ROOT not defined. Please define NDK_ROOT in your environment or in local.properties
작년 7월 처음 cocos2d-x 설치하는 것을 정리했을 때는 cygwin에서 bashrc 파일에 패스를 설정해줘야 했었죠. 이부분에 있어 cygwin이나 vi가 익숙치 않으셨던 분들은 불편했을텐데 cocos2d-x와 안드로이드 SDK 등이 버전업이 되면서 기본적으로 추가되어 있는 이클립스에서 NDK를 빌드할 수 있는 CDT까지 갖추어져 있어 설정 및 빌드가 가능해졌네요. 예전보다는 빌드 환경이 많이 좋아지긴 했네요.
이 에러는 그림과 같이 이클립스 Window -> Preferences -> C/C++ -> Build -> Environment에 New variable을 Name은 NDK_ROOT로 각자의 NDK가 설치된 환경에 맞게 추가해줍니다. 이렇게 해주면 굳이 C++ NDK 빌드를 cygwin에서 하지 않아도 이클립스에서 빌드가 가능하더군요. 물론 cygwin 환견변수에 설정을 먼저 했다면 이 오류는 발생하지 않습니다.
2. Error generating final archive: java.io.FileNotFoundException: C:\Projects\cocos2d-x-2.2.0\samples\Cpp\HelloCpp\proj.android\bin\resources.ap_ does not exist HelloCpp Unknown Android Packaging Problem
Ploblems 로그는 위와 같고
Unable to add 'C:\Projects\cocos2d-x-2.2.0\samples\Cpp\HelloCpp\proj.android\assets\fonts\Marker Felt.ttf': Zip add failed
ERROR: unable to process assets while packaging 'C:\Projects\cocos2d-x-2.2.0\samples\Cpp\HelloCpp\proj.android\bin\resources.ap_'
ERROR: packaging of 'C:\Projects\cocos2d-x-2.2.0\samples\Cpp\HelloCpp\proj.android\bin\resources.ap_' failed
Console 로그가 위와 같은 에러가 발생했습니다. Marker Felt.ttf 파일 때문에 에셋 팩킹을 실패하는 오류입니다. 작년에 한참 cygwin으로 빌드시에는 chmod 777 -R assets 를 해서 권한 수정 후 이상없이 했는데 이번에는 안되더군요.
if [ -f "$file" ]; then
cp "$file" "$APP_ANDROID_ROOT"/assets
fi
done
빌드하고 있는 프로젝트의 build_native.sh 파일의 마지막쯤에 있는 위 내용중 fi와 done 사이에
chmod 777 -R "$APP_ANDROID_ROOT"/assets
를 추가해줍니다. 그러면 빌드시 assets에 파일을 복사 후 자동으로 파일 모드를 777로 바꿔주는데 이렇게 하면 잘 되더군요.
3. Android NDK: WARNING: APP_PLATFORM android-9 is larger than android:minSdkVersion 8 in ./AndroidManifest.xml HelloCpp line 128, external location: C:\Projects\android-ndk-r8e\build\core\add-application.mk C/C++ Problem
AndroidManifest.xml에 최소 SDK가 8로 되어 있는데 NDK 빌드시 9 이상을 요구한다는 경고성 에러입니다.
<uses-sdk android:minSdkVersion="8"/>
AndroidManifest.xml 에서 위 minSdkVersion을 9 이상으로 변경하거나
APP_PLATFORM := android-8
jni/Application.mk 파일에 위와 같이 APP_PLATFORM을 minSdkVersion과 같게 추가해주면 됩니다.
cocos2d-x 오랜만에 빌드 성공 했네요. 이 에러들은 꼭 2.2.0 이 아니더라도 발생하는 것 같습니다.
- cocos2d-x-2.2.0
- Windows7
- android-ndk-r8e-windows-x86
- adt-bundle-windows-x86_64-20130917
1. NDK_ROOT not defined. Please define NDK_ROOT in your environment or in local.properties
작년 7월 처음 cocos2d-x 설치하는 것을 정리했을 때는 cygwin에서 bashrc 파일에 패스를 설정해줘야 했었죠. 이부분에 있어 cygwin이나 vi가 익숙치 않으셨던 분들은 불편했을텐데 cocos2d-x와 안드로이드 SDK 등이 버전업이 되면서 기본적으로 추가되어 있는 이클립스에서 NDK를 빌드할 수 있는 CDT까지 갖추어져 있어 설정 및 빌드가 가능해졌네요. 예전보다는 빌드 환경이 많이 좋아지긴 했네요.
이 에러는 그림과 같이 이클립스 Window -> Preferences -> C/C++ -> Build -> Environment에 New variable을 Name은 NDK_ROOT로 각자의 NDK가 설치된 환경에 맞게 추가해줍니다. 이렇게 해주면 굳이 C++ NDK 빌드를 cygwin에서 하지 않아도 이클립스에서 빌드가 가능하더군요. 물론 cygwin 환견변수에 설정을 먼저 했다면 이 오류는 발생하지 않습니다.
2. Error generating final archive: java.io.FileNotFoundException: C:\Projects\cocos2d-x-2.2.0\samples\Cpp\HelloCpp\proj.android\bin\resources.ap_ does not exist HelloCpp Unknown Android Packaging Problem
Ploblems 로그는 위와 같고
Unable to add 'C:\Projects\cocos2d-x-2.2.0\samples\Cpp\HelloCpp\proj.android\assets\fonts\Marker Felt.ttf': Zip add failed
ERROR: unable to process assets while packaging 'C:\Projects\cocos2d-x-2.2.0\samples\Cpp\HelloCpp\proj.android\bin\resources.ap_'
ERROR: packaging of 'C:\Projects\cocos2d-x-2.2.0\samples\Cpp\HelloCpp\proj.android\bin\resources.ap_' failed
Console 로그가 위와 같은 에러가 발생했습니다. Marker Felt.ttf 파일 때문에 에셋 팩킹을 실패하는 오류입니다. 작년에 한참 cygwin으로 빌드시에는 chmod 777 -R assets 를 해서 권한 수정 후 이상없이 했는데 이번에는 안되더군요.
if [ -f "$file" ]; then
cp "$file" "$APP_ANDROID_ROOT"/assets
fi
done
빌드하고 있는 프로젝트의 build_native.sh 파일의 마지막쯤에 있는 위 내용중 fi와 done 사이에
chmod 777 -R "$APP_ANDROID_ROOT"/assets
를 추가해줍니다. 그러면 빌드시 assets에 파일을 복사 후 자동으로 파일 모드를 777로 바꿔주는데 이렇게 하면 잘 되더군요.
3. Android NDK: WARNING: APP_PLATFORM android-9 is larger than android:minSdkVersion 8 in ./AndroidManifest.xml HelloCpp line 128, external location: C:\Projects\android-ndk-r8e\build\core\add-application.mk C/C++ Problem
AndroidManifest.xml에 최소 SDK가 8로 되어 있는데 NDK 빌드시 9 이상을 요구한다는 경고성 에러입니다.
<uses-sdk android:minSdkVersion="8"/>
AndroidManifest.xml 에서 위 minSdkVersion을 9 이상으로 변경하거나
APP_PLATFORM := android-8
jni/Application.mk 파일에 위와 같이 APP_PLATFORM을 minSdkVersion과 같게 추가해주면 됩니다.
cocos2d-x 오랜만에 빌드 성공 했네요. 이 에러들은 꼭 2.2.0 이 아니더라도 발생하는 것 같습니다.
댓글
댓글 쓰기