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 适用于游戏开发。

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

时间: 2024-08-25 08:24:42

iOS热更新的几种方案的相关文章

IOS热更新-JSPatch实现原理+Patch现场恢复

关于HotfixPatch 在IOS开发领域,由于Apple严格的审核标准和低效率,IOS应用的发版速度极慢,稍微大型的app发版基本上都在一个月以上,所以代码热更新(HotfixPatch)对于IOS应用来说就显得尤其重要. 现在业内基本上都在使用WaxPatch方案,由于Wax框架已经停止维护四五年了,所以waxPatch在使用过程中还是存在不少坑(比如参数转化过程中的问题,如果继承类没有实例化修改继承类的方法无效, wax_gc中对oc中instance的持有延迟释放...).另外苹果对于

iOS 热更新技术探索

最近在找工作,所以有时间研究一些BAT用到的一些框架和技术,今天要写的是热更新. 1.什么是热更新. 受限于iOS平台需要先审核在上线,一旦线上发现bug,想要修复还需要等到下次版本提交,这无形中会带给我们一些困扰,尤其是一些BAT量APP,所以热更新技术应运而生. 2.热更新解决方案. 我目前知道的有两种 第一种:微信使用的JSPatch JSPatch看名字就知道它是通过JS来实现的,大致原理就是通过下发JS脚本,通过消息转发调一些OC原生的方法,这个框架主要是用到一些JS高阶和运行时结合消

如何实现iOS热更新

最近被苹果审核整怕了,每次提交版本都得等待一周到两周的审核时间,我是受不了这种速度了,于是决定研究有没有其他的方法跳过提交版本这个步骤,同样能够修复bug呢,于是我找到了JSPatch,也许也有很多人觉得这是个很高大上的技术,其实不然,我们只需要在项目里引入极小的引擎文件,就可以使用 JavaScript 调用任何 Objective-C 的原生接口,替换任意 Objective-C 原生方法.当然呢,目前主要用于下发 JS 脚本替换原生 Objective-C 代码,实时修复线上 bug. J

Unity官方公布热更新方案性能对比

孙广东  2016.3.11 Unity应用的iOS热更新 作者:丁治宇 Unity TechnologiesChina Agenda ?  什么是热更新 ?  为何要热更新 ?  如何在iOS 上对Unity 应用进行热更新 ?  支持Unity iOS 热更新的各种Lua 插件的对比 什么是热更新 ? 广义定义 ? 无需关闭服务器,不停机状态下修复漏洞,更新资源等,重点是更新逻辑代码. ? 狭义定义( iOS热更新) ? 无需将代码重新打包提交至AppStore,即可更新客户端的执行代码,即

Unity官方发布热更新方案性能对照

孙广东  2016.3.11 Unity应用的iOS热更新 作者:丁治宇 Unity TechnologiesChina Agenda ?  什么是热更新 ?  为何要热更新 ?  怎样在iOS 上对Unity 应用进行热更新 ?  支持Unity iOS 热更新的各种Lua 插件的对照 什么是热更新 ? 广义定义 ? 无需关闭server,不停机状态下修复漏洞,更新资源等,重点是更新逻辑代码. ? 狭义定义( iOS热更新) ? 无需将代码又一次打包提交至AppStore,就可以更新clien

Unity3D热更新方案网摘总结

参考:http://blog.csdn.net/guofeng526/article/details/52662994 http://blog.csdn.net/u010019717/article/details/50853207 "热更新"这个词,在Unity3D的应用下,是有些语义错误的,但是作为大家都熟知的一项技术,我们姑且这么叫它,相信很长时间内,大家依然还会这么叫,甚至有人叫它"暖更新". 一.什么是热更新? 广义定义 无需关闭服务器,不停机状态下修复漏

Unity实现c#热更新方案探究(一)

最近研究了一下如何在unity中实现c#的热更新,对于整个DLL热更新的过程和方案有一个初步的了解,这儿就写下来,便于后续的深入调查和方案选择. 一.C# DLL的动态加载和卸载 既然要热更新,那么就是动态的加载c#的DLL,所以第一步就是研究如何实现DLL的动态加载和卸载. 在CLR Via C#中,对于DLL的加载有详细的讲解,这儿就不再长篇幅的讲解整个过程,简单的来说,在C#的工程中,都会生成一个默认的程序域appDomain,就叫做DefaultAppDomain吧,在这个程序域的基础上

Android Muitldex热更新修复方案原理

前言 做程序开发,基础很重要.同样是拧螺丝人家拧出来的可以经久不坏,你拧出来的遇到点风浪就开始颤抖,可见基本功的重要性.再复杂的技术,也是由一个一个简单的逻辑构成.先了解核心基础,才能更好理解前沿高新技术. 正文大纲 先看效果{github Demo地址}:(https://github.com/18598925736/HotUpdateDemo) Demo使用方法 Demo源码概览 热修复核心技术 基础知识预备 hook思路 TIPS 热更新技术,不是新话题.目前最热门的热更新由两种,一种是腾

苹果下架4万App就只是因为“热更新”

前去除软件热更新功能,不然有可能下架后,昨日(6 月 22 日),有媒体报道,一周内苹果 App Store 下架了近 4万款中国 App .一种流行观点认为,苹果不是说着玩,而是真对热更新动刀子了. 热更新是一种各大手游等众多 App 常用的更新方式,即用户通过 App Store下载App之后,打开 App 时遇到的即时更新. 2017年6月,AppStore 审核团队确实针对 AppStore 中"热更新"的 App 开发者发送邮件,要求移除所有相关的代码.框架或 SDK,并重新