cocos2d-x for android配置 & 運行 Sample on Linux OS


1.從http://www.cocos2d-x.org/download下載穩定版 比如cocos2d-x-2.2

2.解壓cocos2d-x-2.2.zip,比如本文將其解壓到 /opt 目錄下

3.運行 android-buildsetup.sh,運行之前需要先設置3個環境變量,如將以下變量寫到文件 /etc/profile中

export ANDROID_SDK_ROOT=/opt/android-sdk-linux
export ANDROID_NDK_ROOT=/opt/android-ndk-r9b
export COCOS2DX_ROOT=/opt/cocos2d-x-2.2
export PATH=$COCOS2DX_ROOT:$ANDROID_NDK_ROOT:$ANDROID_SDK_ROOT:$PATH

然后:

$ cd /opt/cocos2d-x-2.2/tools
$ ./android-buildsetup.sh

2.2.3版本需要采用如下的方式運行:(如果按照上面的運行話,腳本還給出了提示,贊,這個比較人性化)

$ cd ./tools/android-buildsetup.sh
lbq:/opt/cocos2d-x-2.2.3.$ ./tools/android-buildsetup.sh

即改成需要在根目錄下運行

android-buildsetup.sh的主要目的是將android sdk與ndk的目錄路徑寫到各個sample工程的local.properties文件中.

成功運行,如下圖所示:

4.接着編譯JNI,與普通的Andorid工程不同的是,不是進入android工程中的JNI目錄,然后運行ndk-build,如果這樣運行,會出現如下的錯誤:

$ cd /opt/cocos2d-x-2.2/samples/Cpp/HelloCpp/proj.android/jni
$ ndk-build
Android NDK: /opt/cocos2d-x-2.2/samples/Cpp/HelloCpp/proj.android/jni/Android.mk: Cannot find module with tag 'cocos2dx' in import path    
Android NDK: Are you sure your NDK_MODULE_PATH variable is properly defined ?    
Android NDK: The following directories were searched:    
Android NDK:         
/opt/cocos2d-x-2.2/samples/Cpp/HelloCpp/proj.android/jni/Android.mk:19: *** Android NDK: Aborting.    .  Stop.

而應該是:

$ cd /opt/cocos2d-x-2.2/samples/Cpp/HelloCpp/proj.android
$ ./build_native.sh

如果正確的話,就會產生.so文件

5.但是如果您的NDK版本不是最新或者不購新的話(至少是r6以上,不包括r6版本),則會出現如下的錯誤:

/opt/cocos2d-x-2.2/cocos2dx/platform/android/CCGL.h:47: error: 'PFNGLGENVERTEXARRAYSOESPROC' does not name a type
/opt/cocos2d-x-2.2/cocos2dx/platform/android/CCGL.h:48: error: 'PFNGLBINDVERTEXARRAYOESPROC' does not name a type
/opt/cocos2d-x-2.2/cocos2dx/platform/android/CCGL.h:49: error: 'PFNGLDELETEVERTEXARRAYSOESPROC' does not name a type

網上也能查到很多這樣的錯誤,也都是說NDK版本低的原因。

剛開始我更新了NDK版本並且重新執行了步驟3,但是還會出現以上的錯誤,

后來發現,是因為build_native.sh這個Shell腳本寫的有問題:

# write local.properties if it doesn't already exist
    if [ -f "$_LOCAL_PROPERTIES_FILE" ]
    then
        echo "$_LOCAL_PROPERTIES_FILE exists. skipping overwrite"
    else
        echo "writing $_LOCAL_PROPERTIES_FILE"
        echo -e "$_CONTENTS" > "$_LOCAL_PROPERTIES_FILE"
    fi

看到了沒,寫local.properties當且僅當local.properties文件不存在的時候,所以只要一開始運行過一次android-buildsetup.sh,那么那些android工程下local.properties就不會被更新,所以需要修改下android-buildsetup.sh這個腳本,每次運行都強制寫local.properties文件:

# write local.properties wether if is exist
#    if [ -f "$_LOCAL_PROPERTIES_FILE" ]
#    then
#        echo "$_LOCAL_PROPERTIES_FILE exists. skipping overwrite"
#    else
        echo "writing $_LOCAL_PROPERTIES_FILE"
        echo -e "$_CONTENTS" > "$_LOCAL_PROPERTIES_FILE"
#    fi

這樣,就徹底搞定了。

6./opt/cocos2d-x-2.2/cocos2dx/platform/android這個是cocos2dx引擎的代碼,很多sample工程都要引用這個lib

7.HelloCpp的“夢書”(原來是"Hello World"修改了下)二字來自 /opt/cocos2d-x-2.2/samples/Cpp/HelloCpp/Classes 下的HelloWorldScene.cpp文件

CCLabelTTF* pLabel = CCLabelTTF::create("夢書", "Arial", TITLE_FONT_SIZE);

代碼很像Object C不是。--- 不過目前每次clean都會連cocos2d-x的引擎代碼C++部分一起重新編譯,很慢哦

 

參考:

1. https://github.com/cocos2d/cocos2d-x

2.How to setup Cocos2d-x (Windows and Android)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM