iOS 热修复技术

警告

很遗憾,就在写完这篇文章没几天,iOS开发者们就陆续收到苹果的警告邮件,要求停止使用动态下发的热修复技术。
最初应该是在JSPatch的gihub上,有人提到苹果的警告邮件,然后大家纷纷围观灌水~
到目前为止,业界没有特别好的解决方案或者替代方案,JSPatch平台也建议开发者在下一个版本停止使用JSPatch。
相关的总结可以看这里。

至于DynamicCocoa会怎么样,我估计也。。。(╮(╯▽╰)╭)

===================以下是原文======================

前言

Hot-Fix热修复技术,就是指不需要重新上架ipa包就修复线上bug的相关机制。
由于App Store的审核机制,以及苹果不允许App加载动态库等原因,iOS的热修复技术一直比较欠缺。
但是bug是难以避免的,除了通过严格测试来修复上线前的bug,用热修复技术来解决线上bug,对于一款App来说,是相当必须的。

当前主流的iOS热修复技术

1.JSPatch 已开源,也有成熟的商业化方案。
2.滴滴打车的动态化方案DynamicCocoa,据说今年会开源,十分期待。

JSPatch

JSPatch 的原理简单的说,就是下发js 代码,通过JSPatch的引擎,为iOS程序动态地添加模块 或者 替换
![Uploading 1614740780-55e3c766792db_articlex_594374.png . . .]
原生代码,从而达到不更新版本修复线上bug的目的。
具体的使用方法不展开说了,下边就自己接入过程中遇到的两个问题做一下记录

a. 传输安全

这种打补丁的机制几乎可以控制整个App了,所以必须补丁脚本在传输过程中的安全。至少也要防止补丁脚本被篡改。

  1. 采用HTTPS,这种方法比较通用。今年苹果又把强制APP使用HTTPS的时间推迟了,我们项目也还没有完全采用HTTPS。
  2. 第二种方法是 使用RSA校验

iOS 热修复技术_第1张图片
RSA 加密流程

JSPatch作者有提供打包加密的工具 JSPathc Loader

b. 执行安全

还需要考虑脚本在执行过程中的安全,Patch包的加载在App启动的初期,如果Ptach包本事含有导致crash的bug,那么会造成App永远无法正常启动的严重问题。

iOS 热修复技术_第2张图片
防crash机制

协议设计参考

iOS 热修复技术_第3张图片
协议设计参考
iOS 热修复技术_第4张图片
补丁版本检测流程

你可能感兴趣的:(iOS 热修复技术)