U8SDK——iOS打包工具核心原理

作者: 分类: U8SDK 发布时间: 2016-07-31 16:07 69条评论

在说Android打包工具原理的时候,我们说到了U8SDK整套框架的核心设计思想。针对N款游戏,我们让渠道SDK的接入成本始终控制在1,而不是N。

这就是U8SDK Android版本和iOS版本的核心设计原则,所有的设计,就本着这个宗旨来实现。但是,为了适应几十家几百家渠道,同时又不能破坏这个原则,这就要求我们的框架足够的灵活,足够的可扩展。

之前Android打包工具核心思想(穿越到Android打包工具核心原理)中我们说了Android整套打包方式的核心原理。这篇,我们来说说iOS整套打包方式的核心原理。

和Android整体思路一样,整套框架的使用原理,如下图所示:

u8pack

游戏A,游戏B,游戏C是三款不同的游戏,对于他们来说,他们只需要调用U8SDK抽象层提供的接口,就完成了所有SDK的接入工作。

但是,我们知道,各个渠道SDK针对不同的游戏,都有不同的APPID,APPKEY等配置信息。所以,我们需要将这些配置信息也放在配置文件中。打包的时候,不同的游戏根据不同的配置,通过打包工具得到各个SDK的渠道包。

这样设计之后,游戏只需要关心U8SDK抽象层的接口对应的含义即可,不再需要去弄清楚各个渠道SDK是怎么接入的。

换句话说,我们将渠道SDK的接入和游戏开发进行了完全的分离。两者的工作,可以同时进行,不再相互依赖。

通过上图,我们也可以看到,打包工具在整套框架中承担了很核心的角色。正是通过打包工具,我们才得以实现整套框架的自动化处理。

下面,我们就来看看,打包工具,它的核心工作原理是什么。 对于打包工具来说,它的输入,就是某个游戏,以及该游戏需要打出的各个渠道的配置信息,然后经过打包过程,输出最终的渠道包。

那么,我们先通过下图来展示一下iOS框架打包工具的工作原理:

pack-steps

1、iOS打包工具的输入,是游戏的母工程。母工程并不是游戏的原始工程,比如你用unity3d开发的游戏,母工程是指导出的xcode工程。对于cocos2dx引擎也是一样。 母工程,就是指游戏导出的xcode工程。

2、为了不破坏母工程,每个渠道在打包的时候,都会先拷贝一份母工程到当前游戏的工作目录下,后面参数的合并,渠道资源的合并,都在这个拷贝出来的临时工程中完成。

3、拷贝游戏资源,有些时候,我们需要在游戏包中放不少游戏资源,我们可以将这些资源放到指定的目录,打包的时候,会将这些资源拷贝到工程中,打到最终的渠道包中

4、处理图片,一般渠道sdk我们需要处理的图片,指的是游戏的ICON和启动屏图片。游戏的icon和启动屏图片,放在渠道配置目录下,或者放在游戏通用配置目录下,打包的时候,按照优先级顺序进行替换

5、处理xcode工程

PS:U8SDK采用插件式结构,登陆功能,支付功能,分享功能,统计功能等都抽象为一个一个插件。某个渠道,你可以配置同时配置多个插件。

  • 5.1 读取渠道配置参数,游戏通用配置参数,将这些参数写到info.plist文件中
  • 5.2 按照顺序执行[通用处理脚本]->[游戏自定义处理脚本]->[各个插件自定义处理脚本]-> [渠道自定义处理脚本]

6、调用xcode打包命令,进行打包,生成最终的渠道包(ipa文件)

这就是iOS打包工具的核心原理, 思路和Android的打包工具是一样的。但是他们的核心工作原理是不同的。Android我们采用反编译二次打包,资源动态合并的方式来打包;iOS我们采用母工程,基于配置来修改xcode工程完成渠道资源的合并,并最终通过xcode打包命令来生成最终的渠道包。

好了,iOS打包工具的原理就到这里。 需要源码或者感兴趣的同学,可以通过我们的增值服务来获得(穿越到增值服务

感谢同学们对U8SDK一如既往地支持~

本文出自 U8SDK技术博客,转载时请注明出处及相应链接。

本文永久链接: http://www.uustory.com/?p=2092

评论功能已经关闭,请加入U8SDK技术群进行讨论和咨询:207609068
Ɣ回顶部
U8SDK技术群 x
技术同学请加入
点击加入