引言
在xcode下使用cocos2d-x+Lua开发游戏项目的过程中,我们只是把cocos2d-x作为一种工具在使用,而作为cocos2d-x引擎本身,我们基本不会修改底层(或者说是很少修改),那么问题来了,如果我们需要重编译或者archive打包的时候,编译cocos的库将会占据大部分的时间,基于这种情况,如果我们把cocos(或者一些不会修改的依赖项目)编辑成一个静态库的话,势必会节省很多不必要的编译时间。
1.使用cocos2d-x+Lua开发,会用到哪些底层项目(库)
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版本。
- 编译该工程,编译成功后,在Products显示编译成功的静态库,右击查看生成在本地的静态库。
- 如图,是生成的各个版本的静态库。
- 可以通过命令:“lipo -info XXX.a”可以查看静态库的适用环境。
- 将.a静态库文件放在项目路径下(建议新建目录)。
- 打开xcode,选择targets,选择Build Phases下的Link Binary With Libraries,点击左下角的“+”后选择“Add Other...”,选择加到项目路径下的.a文件。
- 如图,添加成功。
- cocos2d_lua_binding项目和libsimulator项目编译生成静态库并加入到项目流程类似,不再赘述。
注:为了通用起见可以将几个.a库进行合并,这样生成的静态库既可以在模拟器下运行,也可以在真机下运行,合并的命令类似于:lipo -create ./Debug-iphonesimulator/libCocosDenshion\ iOS.a ./Debug-iphoneos/libCocosDenshion\ iOS.a -output $OUTPUTDIR_PATH/libCocosDenshion\ iOS.a