2018-05-16 关于热更新的一些想法

在IT领域,大前端,AI人工智能,大数据大火的情况下,移动端显得有些凄凉,特别是iOS,打包上架异常繁琐不说,审核还时不时出现问题 ,所以就有了一些炙手可热的热更新技术(JSpatch[1] ,RN[2]等) .

刚刚睡醒,一个想法出现在眼前, 自己动手实现一个热更新,可能会受制于后端,如果后端能够配合并加以设计,那就完美了。

我的想法

- app 写一套正常的代码
- 利用Aspects的Aop 运行时hook,在已有代码上做修改或者替换已有代码
- 后端涉及到页面的接口都添加一个`extendCode`,App动态判断,如果有这个东西(加转义的json字符串)就解析这个json里的iOS代码进行替换

涉及到的场景

  1. 遇到不可预见的bug,不想发版本,要热修复
  2. 需要隐藏或者修改一些东西,受制于发版时间
  3. 搞一个活动页,但是需要和原生交互,活动体验受限

没有热更新,意味着写更多的代码或者马甲包

  1. 强制更新

    1. 推送一个弹窗消息,提示升级
    2. 接口判断升级,自动弹出提示窗口
    3. 支付宝/12306/王者荣耀等大厂支持弹出窗口进行应用内升级,而大部分App还只是跳转应用商店去下载最新版本
  2. 切换根控制器

    1. 之前玩过一个看视频的App,需要填写它指定的邀请码,不然进去的时候是一个毫无违和感的电商应用,填写邀请码之后则是另一个乾坤(意味着写了两套代码)
    2. 看过很多强制登录以及启动引导图的做法也是切换跟控制器来实现的
  3. 马甲包

    1. 原有应用的代码进行修改样式,logo,App的名字,证书,包名等
    2. 重新写一个套壳子,title+web的形式, 套壳包

  1. JSPatch诞生于2015年5月,最初是腾讯广研高级iOS开发@bang的个人项目。它能够使用JavaScript调用Objective-C的原生接口,从而动态植入代码来替换旧代码,以实现修复线上bug

  2. React Native (简称RN)是Facebook于2015年4月开源的跨平台移动应用开发框架,是Facebook早先开源的JS框架 React 在原生移动应用平台的衍生产物,目前支持iOS和安卓两大平台。RN使用Javascript语言,类似于HTML的JSX,以及CSS来开发移动应用,因此熟悉Web前端开发的技术人员只需很少的学习就可以进入移动应用开发领域。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,738评论 25 709
  • 用到的组件 1、通过CocoaPods安装 2、第三方类库安装 3、第三方服务 友盟社会化分享组件 友盟用户反馈 ...
    SunnyLeong阅读 14,952评论 1 180
  • 这几日, 总是晨昏颠倒, 在凌晨睡去, 在艳阳高照时醒来, 与其说是贪睡,不如说是放纵于梦里的生与死。 当夜晚来临...
    包小包ya阅读 2,801评论 0 0
  • 在我们讨论知识是如何被最好地寻求之前,让我们先考虑两个阻碍知识的习惯:假设和猜测。假设是把一些事情当作理所当然...
    sxrunn阅读 962评论 0 1
  • 写得好的人,无非一点,就是用心。只要肯用心的人,才会想方设 一、关于写作 1、用心写作 写得好的人,无非一点,就是...
    不过听多了阅读 1,183评论 0 0