本文主要討論如何將一個(gè)win32項(xiàng)目,移植到android上面,網(wǎng)上很多文章說(shuō)的不一樣,因?yàn)閏ocos2d-x的android項(xiàng)目配置方法好像修改過(guò)幾次(好像?我沒(méi)用過(guò)老版的),本文提供一種簡(jiǎn)單的方法。
第零步:配置android工程生成器
#1用ue之類(lèi)的編輯器打開(kāi)cocos2d-x目錄下的create-android-project.bat
#2編輯這三個(gè)變量

意思太明白了,就不解釋了
第一步:建立android工程
#1運(yùn)行cocos2d-x目錄下的create-android-project.bat
#2然后首先輸入包名和項(xiàng)目名。
注意有坑!這會(huì)刪除和覆蓋你在cocos2d-x安裝目錄下同名文件夾,如果你建立了一個(gè)同名項(xiàng)目(有的話一般是win32的)的話。
#3然后輸入支持系統(tǒng)版本,android是向下兼容的。我這里寫(xiě)5,也就是android2.1-update1
然后項(xiàng)目就建立好了,你會(huì)發(fā)現(xiàn)在cocos2d-x安裝目錄下,多了個(gè)Test文件夾
第二步:導(dǎo)入代碼和資源
#1打開(kāi)Test
#2我們看到有三個(gè)文件夾,其中android就是android項(xiàng)目文件夾
把你win32項(xiàng)目里的Classes拷貝到當(dāng)前Classes下(注意刪除Classes里面的多余的cpp和h,就是項(xiàng)目自動(dòng)生成的那些)
把你win32項(xiàng)目里的Resources拷貝到當(dāng)前Resources下(注意刪除Classes里面的多余資源,就是項(xiàng)目自動(dòng)生成的那些)
第三步:編輯mk
#1注意有坑!android項(xiàng)目里有一大堆mk,而且不同的教程說(shuō)的mk位置還不一樣!你編輯錯(cuò)誤了,是無(wú)效的(跟你實(shí)際使用的mk也有關(guān)系)。在這個(gè)例子中,我們使用的是Classes下的mk
#2要修改的地方如下
LOCAL_SRC_FILES:在這里加入你Classes下的cpp文件
LOCAL_C_INCLUDES:在這里添加你使用的庫(kù)的h文件,如果有的話
LOCAL_LDLIBS:在這里添加你使用的庫(kù)的lib文件,如果有的話
這里我使用的是,之前的“是男人就堅(jiān)持20秒”那個(gè)例子的代碼
注意,第三方庫(kù)和額外的庫(kù)都是要自己添加的。默認(rèn)生成的mk里沒(méi)那么全。
第四步:運(yùn)行build_native.sh腳本,編輯so庫(kù)
#1運(yùn)行你的cygwin安裝目錄下的Cygwin.bat
#2進(jìn)入當(dāng)前Test\android路徑下
注意cygwin下的命令寫(xiě)法,和win下不同

#3運(yùn)行build_native.sh腳本

頭一次編譯會(huì)長(zhǎng)些,當(dāng)然圖省事你也可以把自己及其他的android項(xiàng)目里面的so復(fù)制進(jìn)來(lái)(應(yīng)該可以把,哈哈哈)
編譯完然后你會(huì)看到,在android文件夾下面生成了一大堆東西。
第五步:導(dǎo)入到eclipse
#1注意有坑!使用新建android項(xiàng)目下的Create project from existing source,如果你使用的是“導(dǎo)入”有可能無(wú)法識(shí)別。
#2導(dǎo)入成功,然后就是編譯執(zhí)行了。cocos2d-x作者推薦用sh編譯so,再用eclipse編譯成apk。

其他注意事項(xiàng):
#1.win32項(xiàng)目對(duì)資源文件大小寫(xiě)不敏感,android敏感,所以如果出錯(cuò)了,把給你提供資源的人給打一頓
#2.可以直接把win32項(xiàng)目里的工程文件,以及win32文件夾復(fù)制進(jìn)來(lái),項(xiàng)目就可以和VS共用了,當(dāng)然cocos2d-x也是這么干的
#3.vs用的是gb碼,android用的是utf-8,解決方法在vs下用iconv,另外最好全都轉(zhuǎn)成utf-8,網(wǎng)上有很多編碼批量轉(zhuǎn)換工具
#4.android的橫豎屏問(wèn)題錯(cuò)亂,在android下把
pDirector->setDeviceOrientation(kCCDeviceOrientationLandscapeLeft);
這句用條件編譯宏給關(guān)掉
另外,關(guān)于cocos2d-x在android上添加第三方庫(kù)的問(wèn)題,6群網(wǎng)友塞風(fēng)朔雪寫(xiě)了一個(gè)文檔,很有參考價(jià)值。我已把它上傳到附件中。