引言
在xcode下使用cocos2d-x+Lua開發(fā)游戲項目的過程中,我們只是把cocos2d-x作為一種工具在使用,而作為cocos2d-x引擎本身辜纲,我們基本不會修改底層(或者說是很少修改),那么問題來了,如果我們需要重編譯或者archive打包的時候傲诵,編譯cocos的庫將會占據(jù)大部分的時間,基于這種情況箱硕,如果我們把cocos(或者一些不會修改的依賴項目)編輯成一個靜態(tài)庫的話拴竹,勢必會節(jié)省很多不必要的編譯時間。
1.使用cocos2d-x+Lua開發(fā)剧罩,會用到哪些底層項目(庫)
cocos2d-x項目
cocos源碼項目栓拜,工程文件是位于 cocos2d-x/build下的cocos2d_libs.xcodeproj文件。cocos2d_lua_bindings項目
cocos2d_lua_bindings作為cocos的綁定項目,只是把cocos的底層功能綁定到lua使用幕与,如果cocos底層不需要修改的話挑势,那么lua-cocos2d-x也是可以打成靜態(tài)庫加到項目中使用的。工程文件是位于cocos2d-x/cocos/scripting/lua-bindings/proj.ios_mac下的cocos2d_lua_bindings.xcodeproj文件啦鸣。
注:如果只是使用cocos2d-x開發(fā)而不是使用cocos2d-x+Lua的話潮饱,則不會有cocos2d_lua_bindings這個項目。simulator項目
simulator是適用于模擬器的項目诫给,我們完全可以把它對應(yīng)的iOS和Mac的target打成靜態(tài)庫香拉,以對應(yīng)不同平臺。文件是位于cocos2d-x/tools/simulator/libsimulator/proj.ios_mac下的libsimulator.xcodeproj文件中狂。
所以凫碌,在使用cocos2d-x開發(fā)中,我們可以把cocos2d-x胃榕、lua-cocos2dx盛险、simulator項目編譯成靜態(tài)庫文件使用
2.編譯靜態(tài)庫
-
以cocos2d-x項目為例,Delete項目下的cocos項目勋又,打開 cocos2d-x/build/cocos2d_libs.xcodeproj工程苦掘,選擇相應(yīng)的target。
如圖赐写,在1處選擇targets為iOS或者M(jìn)ac鸟蜡,在2處選擇為release或者debug版本。
- 編譯該工程挺邀,編譯成功后揉忘,在Products顯示編譯成功的靜態(tài)庫,右擊查看生成在本地的靜態(tài)庫端铛。
- 如圖泣矛,是生成的各個版本的靜態(tài)庫。
- 可以通過命令:“l(fā)ipo -info XXX.a”可以查看靜態(tài)庫的適用環(huán)境禾蚕。
- 將.a靜態(tài)庫文件放在項目路徑下(建議新建目錄)您朽。
- 打開xcode,選擇targets换淆,選擇Build Phases下的Link Binary With Libraries哗总,點擊左下角的“+”后選擇“Add Other...”,選擇加到項目路徑下的.a文件倍试。
- 如圖讯屈,添加成功。
- cocos2d_lua_binding項目和libsimulator項目編譯生成靜態(tài)庫并加入到項目流程類似县习,不再贅述涮母。
注:為了通用起見可以將幾個.a庫進(jìn)行合并谆趾,這樣生成的靜態(tài)庫既可以在模擬器下運行,也可以在真機下運行叛本,合并的命令類似于:lipo -create ./Debug-iphonesimulator/libCocosDenshion\ iOS.a ./Debug-iphoneos/libCocosDenshion\ iOS.a -output $OUTPUTDIR_PATH/libCocosDenshion\ iOS.a