引言
在xcode下使用cocos2d-x+Lua開發遊戲項目的過程中,我們隻是把cocos2d-x作為一種工具在使用,而作為cocos2d-x引擎本身,我們基本不會修改底層(或者說是很少修改),那麼問題來了,如果我們需要重編譯或者archive打包的時候,編譯cocos的庫将會占據大部分的時間,基于這種情況,如果我們把cocos(或者一些不會修改的依賴項目)編輯成一個靜态庫的話,勢必會節省很多不必要的編譯時間。
1.使用cocos2d-x+Lua開發,會用到哪些底層項目(庫)

55EA7405-B045-4DD9-8252-DFBC26653C77.png
-
cocos2d-x項目
cocos源碼項目,工程檔案是位于 cocos2d-x/build下的cocos2d_libs.xcodeproj檔案。
-
cocos2d_lua_bindings項目
cocos2d_lua_bindings作為cocos的綁定項目,隻是把cocos的底層功能綁定到lua使用,如果cocos底層不需要修改的話,那麼lua-cocos2d-x也是可以打成靜态庫加到項目中使用的。工程檔案是位于cocos2d-x/cocos/scripting/lua-bindings/proj.ios_mac下的cocos2d_lua_bindings.xcodeproj檔案。
注:如果隻是使用cocos2d-x開發而不是使用cocos2d-x+Lua的話,則不會有cocos2d_lua_bindings這個項目。
-
simulator項目
simulator是适用于模拟器的項目,我們完全可以把它對應的iOS和Mac的target打成靜态庫,以對應不同平台。檔案是位于cocos2d-x/tools/simulator/libsimulator/proj.ios_mac下的libsimulator.xcodeproj檔案。
是以,在使用cocos2d-x開發中,我們可以把cocos2d-x、lua-cocos2dx、simulator項目編譯成靜态庫檔案使用
2.編譯靜态庫
-
以cocos2d-x項目為例,Delete項目下的cocos項目,打開 cocos2d-x/build/cocos2d_libs.xcodeproj工程,選擇相應的target。
如圖,在1處選擇targets為iOS或者Mac,在2處選擇為release或者debug版本。
4FB6CD1E-E18E-4C9C-82D9-2D6D4FA39F6B.pngCocos2d-x在xcode下開發生成靜态庫添加到項目1.使用cocos2d-x+Lua開發,會用到哪些底層項目(庫)2.編譯靜态庫
- 編譯該工程,編譯成功後,在Products顯示編譯成功的靜态庫,右擊檢視生成在本地的靜态庫。
F7182C01-EB6A-4717-8160-E19A6D992FC8.png
- 如圖,是生成的各個版本的靜态庫。
48FBD211-2E2B-4670-A979-01C3EC93C7EB.png
- 可以通過指令:“lipo -info XXX.a”可以檢視靜态庫的适用環境。
F2C4F370-4A9B-4E00-8CF4-86476444062A.png
- 将.a靜态庫檔案放在項目路徑下(建議建立目錄)。
- 打開xcode,選擇targets,選擇Build Phases下的Link Binary With Libraries,點選左下角的“+”後選擇“Add Other...”,選擇加到項目路徑下的.a檔案。
136A5798-56C1-4F37-9EA9-97DFAE08F4FA.png
- 如圖,添加成功。
F2F45CD1-97DB-4358-A6CA-0B92E2E560A0.png
-
cocos2d_lua_binding項目和libsimulator項目編譯生成靜态庫并加入到項目流程類似,不再贅述。
注:為了通用起見可以将幾個.a庫進行合并,這樣生成的靜态庫既可以在模拟器下運作,也可以在真機下運作,合并的指令類似于:lipo -create ./Debug-iphonesimulator/libCocosDenshion\ iOS.a ./Debug-iphoneos/libCocosDenshion\ iOS.a -output $OUTPUTDIR_PATH/libCocosDenshion\ iOS.a
文/明天不用上課(簡書作者)
原文連結:http://www.jianshu.com/p/5d7f24f0150a
著作權歸作者所有,轉載請聯系作者獲得授權,并标注“簡書作者”。