引言
在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.png
- 编译该工程,编译成功后,在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 著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。