iOS多Target(channel)方案
Cocos2d-x开发,发包是一个比较繁琐的事情,苦于维护各个渠道需求,把代码搞得乱七八糟的。不同的开发人员不遵守规则,到最后维护比实际需要的人力成本多了很多。幸亏我们可以通过多channel方案来解决这个问题。例如我们公司的游戏,iOS就对应的很多渠道,光Applestore就很多,还有部分越狱渠道。不过这些都是换icon、换皮而已。当然有些人,说我可以拷贝工程,但是有没有想过维护成本?修改Bug后每次都要同步到各个工程分支中。
新建channel方案
- Duplicate target,然后将plist文件移动到相应位置。然后再修改schemes
- 修改scheme名称
- 然后修改plist中的identity相关信息,设置号名称等信息。
- 修改URL Schemes。提供外部调用。
- 设置Packaging信息。如info.plist file路径
- 每个target可以设置自己的启动图和闪屏图
- 设置自己的签名及描述文件
- 设置channel各自的文件,选择好target membership
资源文件的快速替换
当然这里大家最担心的一个问题是,不同的资源文件、配置文件怎么差异化?
我们可以这么处理,开发的时候将明显的特殊性的图片资源规划好,例如登录的封面的logo,产品名称都独立出来。方便我们换图的时候,美术直接将这部分图修改后,我们文件夹替换即可。
每个target的Copy Bundle Resources都可以看到我们的资源。
在默认resources中我们可以选择资源对应的Targets Membership。
为每个Channel设置Icon和闪屏图
如何设置每个channel的app icon和LanuchImage?
在target的General选项卡中设置好App Icons and Launch Images选项
维护一套代码的要诀
既然我们在一个工程中设置了多个target或者说是channel方案。那么诱人会问不同的渠道有不同的代码,怎么区分?
这事一个好问题,我们可以定义宏定义来区分
Build Settings选项卡中,在图示区域添加自定义宏来区分
然后代码如下:
#if defined (PACKAGE_TYPE_SPECIAL) //定制包
......
#else
......
#endif
引用不同的库文件
项目中不同渠道接入不同的SDK是比较常见的。我们可以在Library Search中设置引用的库文件