閱讀657 返回首頁    go 技術社區[雲棲]


使用eclipse調試cocos2d-x C++ 代碼(編寫+真機調試,放棄VS)

前提條件:

先看此文:https://blog.csdn.net/tt5267621/article/details/8941084(首先ecplise已經可以編譯cocos2d-x再看此文)

  • 你已經下載coccos2d-x和NDK,並且會使用build_native.sheclipse編譯cocos2d-x項目
  • 安裝NDK Plugin

    英文好的同學可以直接查看官方說明Using the NDK plugin,這裏我簡單翻譯一下

    1. 打開eclipse,在菜單裏選擇Help->Install New Software…
    2. 彈出的窗口裏第一個框”Work with:“後麵輸入https://dl-ssl.google.com/android/eclipse/
    3. 稍等一會,下麵會出來”Developer Tools”和”NDK Plugins”,全部選中,Next,同意協議,等安裝完成後,重啟eclipse
    4. eclipse重啟後,到Eclipse->Preferences->Android->NDK,在這裏設置你的NDK目錄,比如我的,我設置到/android/android-ndk-r8e
    5. 安裝完成

    導入cocos2d-x目錄下的示例遊戲

    這裏我以cocos2d-2.1rc0-x-2.1.3/samples/Cpp/SimpleGame這個自帶的小遊戲為例子來說明一下.

    假設你的eclipse是幹淨的,也就是左邊的Package Explorer欄是空空的

    1. 導入libcocos2d-x到eclipse,右擊Package Explorer空白區域,Import->Existing Android Code Into Workspace,然後在下一個窗口的Root Directory那裏定位到cocos2d-2.1rc0-x-2.1.3/cocos2dx/platform/android/java這個目錄,選中libcocos2dx,導入
    2. 按照上麵的方法導入cocos2d-2.1rc0-x-2.1.3/samples/Cpp/SimpleGame/proj.android
    3. 現在eclipse裏已經有了兩個項目:libcocos2dx,SimpleGame

    設置使用ndk-build來編譯


    因為我們不使用build-native.sh來編譯,所以要先把資源文件得到在android項目的assets下,具體就是把cocos2d-2.1rc0-x-2.1.3/samples/Cpp/SimpleGame/Resources下麵的所有文件複製到cocos2d-2.1rc0-x-2.1.3/samples/Cpp/SimpleGame/proj.android/assets下麵去


    準備工作完畢

    1. 在eclipse的Package Explorer裏右擊SimpleGame項目,選”Properties”,打開項目屬性框
    2. 按下麵設置Tool Chain Editor 
    3. 再設置ndk-build的命令,為 ndk-build NDK_DEBUG=1,確定,關閉對話框 
    4. 這個時候,你選擇Project->Build All,會出現錯誤,意思是NDK_MODULE_PATH設置不對 
    5. 這裏我們不設置NDK_MODULE_PATH,因為設置了它會讓我們無法調試C++代碼,解決上麵問題的辦法是:把編譯過程中需要的庫拷貝到係統默認的NDK_MODULE_PATH裏,跟我來做
    6. 複製cocos2d-2.1rc0-x-2.1.3目錄下的cocos2dx,CocosDenshion,extensions,external這4個目錄到你的NDK的sources目錄下,以我的電腦為例,就是/android/android-ndk-r8e/sources
    7. 複製cocos2d-2.1rc0-x-2.1.3/cocos2dx/platform/third_party/android/prebuilt目錄的所有到NDK的sources目錄下
    8. 這樣我們複製到NDK的sources目錄下的目錄一共有cocos2dx,CocosDenshion,extensions,external, libcurl,libjpeg,libpng,libtiff,libwebp這幾個
    9. 回到eclipse,再次Project->Build All,應該會編譯成功

    修改項目文件結構,以使cdt可以識別我們的C++文件

    為了可以給C++下斷點,我們必須修改一下當前的項目文件結構

    1. 移動cocos2d-2.1rc0-x-2.1.3/samples/Cpp/SimpleGame/Classes目錄到cocos2d-2.1rc0-x-2.1.3/samples/Cpp/SimpleGame/proj.android/jni下麵
    2. 修改cocos2d-2.1rc0-x-2.1.3/samples/Cpp/SimpleGame/proj.android/jni下麵的Android.mk,把原來的

    Android.mk中:

    LOCAL_SRC_FILES := hellocpp/main.cpp \
                ../../Classes/AppDelegate.cpp \
               ../../Classes/HelloWorldScene.cpp \
                ../../Classes/GameOverScene.cpp                       
    LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes 
    

    修改為

    LOCAL_SRC_FILES := hellocpp/main.cpp \
                   Classes/AppDelegate.cpp \
                   Classes/HelloWorldScene.cpp \
                    Classes/GameOverScene.cpp
    
    LOCAL_C_INCLUDES := $(LOCAL_PATH)/Classes    
    

    也就是使文件指向正確的位置

    Project->Build ALL 編譯項目,應該可以成功編譯

    調試

    1. 我們給Classes目錄下的HelloWorldScene.cpp文件裏的ccTouchesEnd方法下一個斷點,這樣遊戲運行後,點擊屏幕應該可以觸發我們的斷點 
    2. 把手機連接到電腦上,右擊SimpleGame, 選 Debug As->Android Native Application
    3. 如果需要選擇手機,選你想調試的
    4. 遊戲運行起來後,觸摸屏幕,可以看到

    eclipse自動切換到了Debug界麵,而且成功的斷點下來了,並且變量可以在右邊窗口查看 Debug界麵上的按鈕就不再多說了,就是繼續執行,單步執行什麼的幾個,摸索一下便知

    Enjoy!

    PS: 上述操作中我們複製了cocos2dx的好多文件到NDK的目錄下麵去,顯的有點繁瑣,這樣做的目錄是為了避開去設置NDK_MODULE_PATH,如果一旦設置了NDK_MODULE_PATH,就會使的調試不可行,可能有更好的方法,如果你知道,或者有什麼問題都可以直接在文章下麵留言

最後更新:2017-04-03 12:56:30

  上一篇:go UVA 之401 - Palindromes
  下一篇:go 如何讓類對象隻在棧(堆)上分配空間?