Skip to content

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
    • Help
    • Submit feedback
    • Contribute to GitLab
  • Sign in
H
HbbDoc
  • Project
    • Project
    • Details
    • Activity
    • Releases
    • Cycle Analytics
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
    • Charts
  • Issues 0
    • Issues 0
    • List
    • Board
    • Labels
    • Milestones
  • Merge Requests 0
    • Merge Requests 0
  • CI / CD
    • CI / CD
    • Pipelines
    • Jobs
    • Schedules
    • Charts
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Members
    • Members
  • Collapse sidebar
  • Activity
  • Graph
  • Charts
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
  • BusinessDoc
  • HbbDoc
  • Wiki
  • 热更新

热更新

Last edited by SXL Jun 05, 2020
Page history

什么是热更新?

热更新(又名热修复),是指通过事先设定好的接口从网上下载无 bug 的代码来替换有 bug 的代码。

正常开发流程

版本1.0上线 > 用户安装 > 发现bug > 紧急修复 > 重新发布版本1.1 > 用户安装

热更新开发流程

版本1.0上线 > 用户安装 > 发现bug > 紧急修复 > 打出补丁,推送给用户 > 自动拉取,补丁修复

热更新流程

热更新的优势

  • 无需重新发布版本
  • 用户无感知修复,无需下载最新的应用,代价小,进而能够提高用户体验
  • 修复成功率高,把损失降到最低

热更新原理

JSPatch 的基本原理就是:JS 传递字符串给 OC,接收到字符串后使用反射机制把字符串转成对应的类和方法,再通过 Runtime 接口调用和替换 OC 方法。

Class class = NSClassFromString("UIViewController");
id viewController = [[class alloc] init];
SEL selector = NSSelectorFromString("viewDidLoad");
[viewController performSelector:selector];

也可以替换某个类的方法为新的实现:

static void newViewDidLoad(id slf, SEL sel) {}
class_replaceMethod(class, selector, newViewDidLoad, @"");

还可以新注册一个类,为类添加方法:

Class cls = objc_allocateClassPair(superCls, "JPObject", 0);
class_addMethod(cls, selector, implement, typedesc);
objc_registerClassPair(cls);

具体热更新原理实现传送门

热更新的几种方式

3689421-c1961de454e321a3.png

JSPatch

平台 SDK 1.7.2 以上版本可以通过苹果审核,但 1.8.0 版本官网提示有大概率审核不过。 文档详细,具体导入步骤 JSPatch 文档

能否上架:不确定


DynamicCocoa

滴滴开源的热更新SDK,具体还未研究...

GItHub地址

滴滴 iOS 动态化方案 DynamicCocoa 的诞生与起航


参考文献

iOS 2020 热更新

移动端热更新方案

Clone repository
  • 业务消息通知谁
  • 产品标准上线流程
  • 代码地图
  • 基本计算公式
  • 外采订单处理规则
  • 如何正常预览打印单据
  • 如何添加打印机
  • 小程序登录注册逻辑
  • 开发团队协作规范
  • 开发团队新人资料
  • 打印型号对照表
  • 收款、付款单处理规则
  • 收款、付款单输入金额限制、核销限制(含退款)
  • 旧用户如何正常打印
  • 标准开发流程
More Pages

New Wiki Page

Tip: You can specify the full path for the new file. We will automatically create any missing directories.