引言
在xcode下使用cocos2d-x+Lua開(kāi)發(fā)游戲項(xiàng)目的過(guò)程中,我們只是把cocos2d-x作為一種工具在使用,而作為cocos2d-x引擎本身,我們基本不會(huì)修改底層(或者說(shuō)是很少修改),那么問(wèn)題來(lái)了,如果我們需要重編譯或者archive打包的時(shí)候,編譯cocos的庫(kù)將會(huì)占據(jù)大部分的時(shí)間,基于這種情況,如果我們把cocos(或者一些不會(huì)修改的依賴項(xiàng)目)編輯成一個(gè)靜態(tài)庫(kù)的話,勢(shì)必會(huì)節(jié)省很多不必要的編譯時(shí)間。
1.使用cocos2d-x+Lua開(kāi)發(fā),會(huì)用到哪些底層項(xiàng)目(庫(kù))
cocos2d-x項(xiàng)目
cocos源碼項(xiàng)目,工程文件是位于 cocos2d-x/build下的cocos2d_libs.xcodeproj文件。cocos2d_lua_bindings項(xiàng)目
cocos2d_lua_bindings作為cocos的綁定項(xiàng)目,只是把cocos的底層功能綁定到lua使用,如果cocos底層不需要修改的話,那么lua-cocos2d-x也是可以打成靜態(tài)庫(kù)加到項(xiàng)目中使用的。工程文件是位于cocos2d-x/cocos/scripting/lua-bindings/proj.ios_mac下的cocos2d_lua_bindings.xcodeproj文件。
注:如果只是使用cocos2d-x開(kāi)發(fā)而不是使用cocos2d-x+Lua的話,則不會(huì)有cocos2d_lua_bindings這個(gè)項(xiàng)目。simulator項(xiàng)目
simulator是適用于模擬器的項(xiàng)目,我們完全可以把它對(duì)應(yīng)的iOS和Mac的target打成靜態(tài)庫(kù),以對(duì)應(yīng)不同平臺(tái)。文件是位于cocos2d-x/tools/simulator/libsimulator/proj.ios_mac下的libsimulator.xcodeproj文件。
所以,在使用cocos2d-x開(kāi)發(fā)中,我們可以把cocos2d-x、lua-cocos2dx、simulator項(xiàng)目編譯成靜態(tài)庫(kù)文件使用
2.編譯靜態(tài)庫(kù)
-
以cocos2d-x項(xiàng)目為例,Delete項(xiàng)目下的cocos項(xiàng)目,打開(kāi) cocos2d-x/build/cocos2d_libs.xcodeproj工程,選擇相應(yīng)的target。
如圖,在1處選擇targets為iOS或者M(jìn)ac,在2處選擇為release或者debug版本。
4FB6CD1E-E18E-4C9C-82D9-2D6D4FA39F6B.png
- 編譯該工程,編譯成功后,在Products顯示編譯成功的靜態(tài)庫(kù),右擊查看生成在本地的靜態(tài)庫(kù)。
- 如圖,是生成的各個(gè)版本的靜態(tài)庫(kù)。
- 可以通過(guò)命令:“l(fā)ipo -info XXX.a”可以查看靜態(tài)庫(kù)的適用環(huán)境。
- 將.a靜態(tài)庫(kù)文件放在項(xiàng)目路徑下(建議新建目錄)。
- 打開(kāi)xcode,選擇targets,選擇Build Phases下的Link Binary With Libraries,點(diǎn)擊左下角的“+”后選擇“Add Other...”,選擇加到項(xiàng)目路徑下的.a文件。
- 如圖,添加成功。
- cocos2d_lua_binding項(xiàng)目和libsimulator項(xiàng)目編譯生成靜態(tài)庫(kù)并加入到項(xiàng)目流程類似,不再贅述。
注:為了通用起見(jiàn)可以將幾個(gè).a庫(kù)進(jìn)行合并,這樣生成的靜態(tài)庫(kù)既可以在模擬器下運(yùn)行,也可以在真機(jī)下運(yùn)行,合并的命令類似于:lipo -create ./Debug-iphonesimulator/libCocosDenshion\ iOS.a ./Debug-iphoneos/libCocosDenshion\ iOS.a -output $OUTPUTDIR_PATH/libCocosDenshion\ iOS.a