ios 快速修复替代方案

487 阅读2分钟

由于ios端APP审核周期较长,所以热修复和商店之外的安装方式营运而生。这里列举比较一下,简单记录,以供参考。

一、热更新

1、JSPatch

JSPatch 是一个开源项目(Github链接),只需要在项目里引入极小的引擎文件,就可以使用 JavaScript 调用任何 Objective-C 的原生接口,替换任意 Objective-C 原生方法。目前主要用于下发 JS 脚本替换原生 Objective-C 代码,实时修复线上 bug。

平台最新 SDK 1.8.2 处于试验阶段,未能确保审核通过,老版本有较大概率审核被拒。

  优点:1、学习成本低  2、接入成本低  3、热更能力高,还可以用它创建新的模块
  缺点:1、下发的JS代码容易被窜改,存在安全漏洞  2、已经被Apple拒绝,上架很难过审  3、不支持跨平台,仅支持OC
  

2、MangoFix

和传统的iOS热修复使用JavaScript bridge 的方式完全不同,MangoFix是一个语法和OC语法非常类似的DSL,其语言本身的设计目标就是为了解决iOS热修复问题,所以在使用的便捷程度和性能方面都要远远超过传统的iOS 热修复SDK。

 优点:1、无感知修复,不用下载远程补丁文件,只需要配置更新文件的远程地址将更新文件保存在本地即可  2、接近OC的语法
 缺点:1、目前还不支持Swift  2、DSL(领域专用语言),难度较高
 

3、OCRunner

首先 PatchGenerator 使用 oc2mangoLib 将 Objective-C 源码生成语法树,随后使用 ORPatchFile 将语法树序列化为补丁文件,最后 OCRunner 使用 OCPatchFile 将补丁反序列化为语法树后解释执行语法树。

优点:1、二进制补丁,安全性高  2、是MangoFix的进化版  3、速度比较快  4、方法比较多
缺点:1、Swift中的类要声明为@objc才能用

备注:JSPath在2015年左右是很火的热更新库,但是后后来受苹果的限制,上架很难,如果不熟悉js,建议使用OCRunner,它是比较接近OC的语法,也仅仅是热修复。不建议通过这种方式随意修改一般功能逻辑!!!

二、重签名,线下分发