基于运营的需要,我们的游戏需要动态更新,但是已经用cocos2dx做得差不多了,再改成lua时间不允许,所以实现另一种更新方式,就是使用动态库。
这种方法的核心思路就是把整个游戏代码抽成一个动态库,然后我们把游戏提取出来一个外壳,专门负责加载更新及运行这个库,这样就可以达到随时更新任何功能模块或者UI的目的,因为整个游戏的代码都在这个动态库里。
注意:此种方式只在非appstore上使用
我将以一个游戏为例,在这走一次全部过程。希望对大家有所帮助
1.设置xcode。因为xcode不支持在ios上使用动态库,所以需要做一些操作。
我的xcode版本是5.0
找到两个目录,最好用两个finder窗口分别打开:
目录一:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Specifications/
目录二:
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/Library/Xcode/Specifications/
(这里只说iOS真机版,模拟器版类似,/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform)
把目录一下的iPhoneOSPackageTypes.xcspec和iPhoneOSProductTypes.xcspec
拷贝到桌面(或者其它有写权限的地方),分别用xcode打开。再用xcode打开目录二下的MacOSX Package Types.xcspec和MacOSX Product Types.xcspec
把MacOSX Package Types.xcspec中Identifier为com.apple.package-type.mach-o-dylib的item拖到iPhoneOSPackageTypes.xcspec,令iPhoneOSPackageTypes.xcspec变成
把MacOSX Product Types.xcspec中Identifier为com.apple.product-type.library.dynamic的item拖到iPhoneOSProductTypes.xcspec,令iPhoneOSProductTypes.xcspec变成:
保存修改,把iPhoneOSPackageTypes.xcspec和iPhoneOSProductTypes.xcspec拷贝回去目录一,此时会因为没有写权限而提示需要鉴定,输入密码即可。
创建工程模板:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates/Project Templates/Framework & Library/Cocoa Touch Static Library.xctemplate
把以上整个文件夹复制到桌面,文件夹改名为Cocoa Touch Dynamic Library.xctemplate,用xcode打开里面的TemplateInfo.plist,修改三个地方:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates/Project Templates/Framework & Library/
这时又需要鉴定。重启