热更新三方平台
热更新,即App不需要上线新版本就可以进行Bugfix,我觉得JSPatch是对开发者比较友好的热修复框架,原因有三:
- 基于iOS内置的JavascriptCore引擎和Object-C的runtime机制实现,集成简单
- 热修复脚本文件使用JavaScript语言编写,容易上手
- 多个JSPatch脚本下发平台支持,无须开发者再烦心脚本下发,以及脚本下发安全问题
1 JSPatch简介
JSPatch是腾讯工程师bang开源的一个基于JavascriptCore引擎和Object-C runtime机制的热修复框架,现已经被广泛应用在iOS App的热修复上,脚本文件使用JavaScript语言编写。
关于JSPatch的原理剖析以及使用方法介绍,网上已经有很多文章,我也不班门弄斧了,这里有两篇文章,都是作者bang自己写的,参考意义比较大,适合大家学习。
JSPatch实现原理详解
【腾讯Bugly干货分享】JSPatch 成长之路
至于想要知道如何编写JSPatch脚本文件,以及脚本文件的语法的可以移驾JSPatch的github地址。
2 JSPatch脚本下发平台
由于项目需要,接触过两个平台,一个是Bugly,一个是JSPatch,比较倾向于JSPatch,从bang在他的github readme中重点推荐JSPatch以及名称上就能够知道JSPatch的正宫位置了,所以接下来我们只讨论JSPatch。
2.1 关于苹果审核拒绝热修复的问题
去年(2017年)苹果毫无征兆地对所有使用JSPatch的App开发者发出了一封警告邮件,表明不许使用JSPatch等基于映射的热更新服务,在iOS开发社区引发了热议,当时刚刚开始准备接入JSPatch的我也停下了脚步,保持着观望态度,经过了一段时间的冷却,苹果官方也从一开始零容忍的态度转变为可容忍(并没有发文表态)的态度,而且JSPatch也对此作出了相对应的处理,一方面联系苹果,表明在JSPatch脚本文件下发过程是安全的,一方面针对脚本文件涉及到私有API调用情况进行审核,经过我的试验,现在App中集成JSPatch已经不会被苹果拒绝审核了(似曾相识的场景是吧,之前苹果针对App中的赞赏功能也强制要求内购,现在也变得睁一只眼闭一只眼了)。
JSPatch平台针对苹果审核拒绝的情况主要作出了以下动作:
- 脚本下发使用加密传输,避免有人恶意修改下发的脚本代码
- 脚本文件上传会经过审核处理,如果发现涉及到私有API调用将不允许发布
- 由于苹果审核时一般采用机器扫描识别代码中JSPatch框架的API,所以在SDK中使用了代码混淆,避免苹果审核时机器识别到
2.2 JSPatch平台的使用
JSPatch平台的集成十分简单,下发过程由于增加了加密传输,所以安全也能够得到保障,具体可以查看开发文档。
另外,由于JSPatch平台目前已经没有了免费版,所以大家可以根据自己需要进行套餐选择,如果想要试验可靠性,可以先申请一个账号,再通过邮箱获取到标准版的SDK下载地址就可以有30天的试用期,如果觉得OK再买也没问题。
写到这里都要感觉自己是JSPatch平台的销售了😓,不要误会啊,我只是觉得好东西需要分享出来。