iOS 热修复技术

作者: 没梦想的咸鱼2 | 来源:发表于2017-03-04 14:32 被阅读1201次

    警告

    很遗憾,就在写完这篇文章没几天,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校验
    RSA 加密流程
    JSPatch作者有提供打包加密的工具JSPathc Loader
    b. 执行安全

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

    防crash机制

    协议设计参考

    协议设计参考 补丁版本检测流程

    相关文章

      网友评论

        本文标题:iOS 热修复技术

        本文链接:https://www.haomeiwen.com/subject/mrokgttx.html