HTML5技术

APP热更新方案 - 大熊先生|互联网后端技术(3)

字号+ 作者:H5之家 来源:H5之家 2017-06-15 09:01 我要评论( )

运行时替换方法的实现实际上这两个能力是非常恐怖的像脚本语言那样,文本即代码,无须编译。后来出现了一个叫做 Wax的项目(这个项目目前由阿里巴巴维护),这个项目打出的口号是用 Lua 来写 iOS 原生应用,当然现

•运行时替换方法的实现实际上这两个能力是非常恐怖的像脚本语言那样,文本即代码,无须编译。后来出现了一个叫做 Wax的项目(这个项目目前由阿里巴巴维护),这个项目打出的口号是用 Lua 来写 iOS 原生应用,当然现实中没有人会这样干,因为写起来实在是太痛苦了。但是鉴于 iOS 应用审核比写 Wax 还痛苦,所以 Wax 成为了做 HotFix 的最佳选择。

这个项目的做法是通过加载 Lua 脚本,动态的生成 Objective-C 的方法,通常用来替换掉出了问题的那个,Lua 脚本是可以动态下发的,所以也就实现了修复线上 bug 的使命。

当然,Wax 用起来是极为痛苦的,尤其是和 Objective-C 的类型转换。

 

JSPatch

iOS 7 的时候 Apple 推出了 JavaScriptCore,这是一个非常有趣的框架,他是 JS 与原生交互的桥梁,让你在原生和 JS 之间穿梭自如,现在 iOS 平台各种动态技术大多都是基于此。

JSCore 推出不久之后,一个更优秀的项目诞生了:由 bang 写的 JSPatch。这个项目无疑从各种角度碾压了 Wax,并且 JS 也比 Lua 更为人熟知,所以也就迅速替代 Wax 成为了热修复的主流选择。

JSPatch 的接入成本非常低,对项目的影响也非常小,不需要引入额外的脚本解释器(因为已经有 JSCore 了),并且 JS 写起来真的比 Lua 要爽很多。

3月8日,很多iOS开发者发了警告邮件,声称其App违规使用动态方法,责令限时整改,Jspatch一直就被打入冷宫了

这次警告事件无疑是对iOS平台Native动态化是一次严重打击,其影响甚至可能波及到Android平台,毕竟Google也是禁止加载远程代码的,并且执行更为严格,只是管不到中国的Android开发而已。

 

滴滴的DynamicCocoa

DynamicCocoa这种方案,绕了一个更大的道,从编译阶段入手,通过 clang 把 OC 代码编译成自己定制的 JS 格式,再动态下发去执行,做到原生开发,动态运行,主打动态添加功能,当然顺便把修 bug 也给支持了。手机 QQ 内部也有一个类似的方案,不过更进一步,他们通过 clang 把 OC 代码编译成自己定制的字节码动态下发,然后开发一个虚拟机去执行(惊呆了),同样实现了原生开发,动态运行,都是 NB 得很的方案。只要底层处理做得足够好,也是个成本低收益高的方案,不过目前都还没开源,在github上是一个只有两行README但是有1000+Star的神奇项目

 

DynamicCocoa与Jspatch 思路上都是实现 JS 和 OC 的互调:DynamicCocoa 的重点是动态化能力,优势在于完全不用写 JS 和更多的语法特性支持;对于 HotPatch 来说 JSPatch 是更加小巧、轻量的解决方案。

 

据说在滴滴 App 已经上线并使用了好几个版本,如滴滴小巴、专车接送机都有过 10k 级别的动态化模块上线。

 

20170612 苹果已经正式禁止热更新,给涉及到检测出来的开发者发了邮件,同时提供 App Store “自动更新的分阶段发布” 功能。

苹果是如何检测的呢,大概可以从给开发者的邮件看出来:

 

 

最后我们来看看苹果的灰度发布功能吧,对于一个花了将近3年时间做国内超大规模私有云的我来说,感受到了熟悉的味道(服务器端灰度发布也是一个套路)

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 探讨SQL Server并发处理存在就更新七种解决方案 - Jeffcky

    探讨SQL Server并发处理存在就更新七种解决方案 - Jeffcky

    2017-06-01 17:00

  • 通用网页调用本地应用程序方案(windows平台) - 小龙女先生

    通用网页调用本地应用程序方案(windows平台) - 小龙女先生

    2017-05-16 13:00

  • 郁金香搜索引擎的方案 - 静儿1986

    郁金香搜索引擎的方案 - 静儿1986

    2017-04-29 10:00

  • 移动端WEBAPP开发遇到的坑,以及填坑方案!持续更新~~~~ - ygjoe

    移动端WEBAPP开发遇到的坑,以及填坑方案!持续更新~~~~ - ygjoe

    2017-04-16 11:00

网友点评
<