iOS热更新的几种方案

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS热更新的几种方案相关的知识,希望对你有一定的参考价值。

ios APP的上架审核一直是个令人困扰的问题,动辄一个星期甚至半个月的审核时间,往往会耽误产品的运营计划。

尤其是,审核过程中难以避免的会被苹果拒绝,然后又是一个周期,很是痛苦。

除了在提交审核前,尽可能的保证产品没有Bug,以及充分研究苹果的app审核政策外,从技术开发层面如果能解决热更新问题,则再好不过了。

所以我简单整理了以下一些技术,可用于产品的内部更新,而不用重新提交给苹果审核。如果有更多的方案,或是错误,也请提出。

 

1. Hybrid App

混合架构,借助于html,JS等前端技术,实现产品的实时更新。通过建立中间层,搭建前端和Native的桥梁,实现相互通信和数据共享。

常见的混合框架有:Cordova(原PhoneGap),ReactJs/ReactNative以及国内的一些技术(Html5+Runtime,APICloud等,技术原理上应与Cordova是相同的)

这种技术的一个明显的优势是,不需要针对多平台做多次开发。但也并非万能,除了体验上的区别外,一些大的功能还是不可避免的要升级客户端的。比如说Cordova,

是以插件的方式提供原生交互能力的,如果插件不足以支撑新功能,则需要升级版本,更新插件。

 

2. JSPatch

JSPatch利用了OC的动态特性,在运行时可以获得类对象和方法,也可以修改方法的实现,可以动态添加新类和新方法,以此实现对代码的更新。

不过这种方法不便于新功能的开发和大范围的改动,做一些修复性的更新还是可以的。

稍详细的介绍可参考简书上的这篇文章http://www.jianshu.com/p/8cec322531ae。后续有时间的话,我会深入了解一下JSPatch的源码。

Github上的中文使用说明:https://github.com/bang590/JSPatch/blob/master/README-CN.md

 

3. xcode 6 之后,苹果开放了 ios 的动态库编译权限。所谓的动态库,其实就是可以在运行时加载。正好利用这一个特性,用来做ios的热更新。【参考 http://www.2cto.com/kf/201507/417661.html

这种方法通过更新动态链接库的方式,提供热更新方法。不过这种方法我没有验证过(包括lua脚本的方法,也没有了解过),对其可用性易用性不妄加评论。

 

4.Cocos2D 适用于游戏开发。

 

以上内容只是简单的整理,并非所有的技术我都得以验证过,如有谬误还请提出。后续会对这些技术一一分析比较。

 

以上是关于iOS热更新的几种方案的主要内容,如果未能解决你的问题,请参考以下文章

Unity上面有啥好的热更新方案

Unity上面有啥好的热更新方案

IDEA实现热部署的几种方式

iOS 热更新技术探索

自研 iOS 热更新机制——OCPack技术方案总结

为啥Unity没有实现iOS平台代码热更新?