cocos2d-x(一) win32交叉編譯android項目經驗

Hello!大家好,歡迎來到互擼娃的博客。這是我的第一篇博文。今天教大家怎麼把2dxwin32項目交叉編譯成android項目並最終編譯成apk。我會講的很詳細。並註明我遇到的一些錯誤。我所用的cocos2d-x版本是2.1.4


需要的所有軟件:VS2010(或2008,2012等)、eclipse+ADT插件+androidSDK(這三個可以單獨下載也可以直接到谷歌開發者頁面下載整合包)、androidNDK、Cygwin

注:eclipse+ADT插件+androidSDK 如果是單獨下載如何配置請看:這裏

        androidNDK直接下載下來解壓。

        如何安裝Cygwin請看這裏。安裝過程有點長。。

       

好了,我們繼續。首先用VS編譯好項目。

(1)創建新空的android項目。

進入到cocos2d-x引擎文件夾下。找到create-android-project.bat這個東西。用它來創建新的空的android項目。但是首先要修改下它。用記事本或其他的打開它。


修改完這三處後,雙擊運行。

之後會彈出這個:


你需要在後面輸入項目包名 比如 com.example.test 然後回車,接下來出現

接着輸入項目名字 如:HelloWorld 然後回車。


然後出現這個,在id 處填上數字 如 填2 就帶表項目最低支持andoroid 2.2版本。


好了,這時你會在cocos2d-x目錄下看到剛剛建成的android空項目。

我建的是myTest

打開後會看到


說明:

Classes裏存放win32你要編譯的項目的cpp文件。

pro.android裏存放的是android的項目文件

Resources裏存放的資源文件

(2)編譯文件

首先你要把win32的項目中你要編譯的所有的.cpp.h文件全部移到myTest\Classes目錄中。

然後把資源圖片音樂什麼的都移動到myTest\Resources目錄下。

然後還要修改一個地方:

進入到   myTest\proj.android\jni下,用記事本打開Android.mk

修改如下:


保存。

好了,接下來打開cygwin編譯文件。但在此之前先配置兩個環境變量吧!

右鍵計算機-屬性-高級管理-環境變量-添加系統變量

名:NDK_ROOT    值:D:\soft\android-ndk-r8e (你的ndk目錄)

名:COCOS2DX_ROOT 值:E:\code\cocos2d-2.1rc0-x-2.1.2-hotfix\cocos2d-2.1rc0-x-2.1.2\cocos2dx  (引擎目錄)

 

來到你的cygwin目錄下,打開Cygwin.bat

接着輸入 cd E:\code\cocos2d-2.1rc0-x-2.1.2-hotfix\cocos2d-2.1rc0-x-2.1.2\myTest\proj.android 回車。也就是進入你的android項目的pro.android目錄下。

接着輸入   ./build_native.sh  這就啓動了build_native.sh 這時就可以編譯了。過程也比較慢。

----------------------------------------------------------

注:雖然之前已經配置了ndk的目錄,但是我運行 輸入./build_native.sh後報錯提示我 未找到ndk! 我在網上找到了解決辦法:

用記事本打開build_native.sh。修改如下


然後繼續運行./build_native.sh吧。

----------------------------------------------------------

備註:第一次成功了。第二次在進行這一步時。出錯了。

出現

cygwin warning:
  MS-DOS style path detected: D:/Slickedit/WorkSpace/Debug/Demo4Cpp.o
  Preferred POSIX equivalent is: /cygdrive/d/Slickedit/WorkSpace/Debug/Demo4Cpp.o
  CYGWIN environment variable option "nodosfilewarning" turns off this warning.
  Consult the user's guide for more details about POSIX paths:
    http://cygwin.com/cygwin-ug-net/using.html#using-pathnames
類似這種錯誤。解決的辦法是添加系統變量 
CYGWIN=nodosfilewarning 
我後來的項目裏用到了iconv.h這個庫。報錯爲
iconv.h: No such file or directory
解決辦法:在源文件裏 #include"iconv.h"  地址寫絕對地址。也就是#include"D:/xxx/xxx/xxx/iconv.h"這樣。


----------------------------------------------------------

(3)eclipse導入項目(4.22版本的eclipse奧)

好了工作接近尾聲了。

打開eclipse。左邊空白處右鍵鼠標-import-導入已存在的項目 還是看圖吧:

然後點擊Browse選擇android項目路徑,最都點擊finish就行了。

導入項目後基本不會出錯。但我的項目出了兩個錯。

第一個是 src裏沒有cocos2dx.lib包 。可以手動複製進去。  打開cocos2dx引擎目錄 進入cocos2dx\platform\android\java\src下。把裏面的org文件夾全複製到eclipse的src裏去就行了。

第二個是AndroidMainifest.xml裏一處。

以前是icon。改成ic_launcher。因爲圖標文件就叫這個。

好了。

最後!

右鍵點擊創建工程是輸入的工程名對應的java文件,選擇RunAs->Run Configurations進入運行設置。在彈出對話框中雙擊AndroidApplication選項,在Android選項卡選擇好工程點擊Run按鈕即可。由於真機可用的*.apk文件將生成於<工程路徑>/Android/bin路徑下。

把apk直接按到手機上吧。

總算結束了。只想說一句話,我去年買了個表。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章