Cocos2d-x在xcode下开发生成静态库添加到项目

引言

在xcode下使用cocos2d-x+Lua开发游戏项目的过程中,我们只是把cocos2d-x作为一种工具在使用,而作为cocos2d-x引擎本身,我们基本不会修改底层(或者说是很少修改),那么问题来了,如果我们需要重编译或者archive打包的时候,编译cocos的库将会占据大部分的时间,基于这种情况,如果我们把cocos(或者一些不会修改的依赖项目)编辑成一个静态库的话,势必会节省很多不必要的编译时间。

使用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项目编译成静态库文件使用

    编译静态库

  • 以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