iOS开发高手课
戴铭
前滴滴出行技术专家
立即订阅
11456 人已学习
课程目录
已完结 46 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 锚定一个点,然后在这个点上深耕
免费
基础篇 (20讲)
01 | 建立你自己的iOS开发知识体系
02 | App 启动速度怎么做优化与监控?
03 | Auto Layout 是怎么进行自动布局的,性能如何?
04 | 项目大了人员多了,架构怎么设计更合理?
05 | 链接器:符号是怎么绑定到地址上的?
06 | App 如何通过注入动态库的方式实现极速编译调试?
07 | Clang、Infer 和 OCLint ,我们应该使用谁来做静态分析?
08 | 如何利用 Clang 为 App 提质?
09 | 无侵入的埋点方案如何实现?
10 | 包大小:如何从资源和代码层面实现全方位瘦身?
11 | 热点问题答疑(一):基础模块问题答疑
12 | iOS 崩溃千奇百怪,如何全面监控?
13 | 如何利用 RunLoop 原理去监控卡顿?
14 | 临近 OOM,如何获取详细内存分配信息,分析内存问题?
15 | 日志监控:怎样获取 App 中的全量日志?
16 | 性能监控:衡量 App 质量的那把尺
17 | 远超你想象的多线程的那些坑
18 | 怎么减少 App 电量消耗?
19 | 热点问题答疑(二):基础模块问题答疑
20 | iOS开发的最佳学习路径是什么?
应用开发篇 (12讲)
21 | 除了 Cocoa,iOS还可以用哪些 GUI 框架开发?
22 | 细说 iOS 响应式框架变迁,哪些思想可以为我所用?
23 | 如何构造酷炫的物理效果和过场动画效果?
24 | A/B 测试:验证决策效果的利器
25 | 怎样构建底层的发布和订阅事件总线?
26 | 如何提高 JSON 解析的性能?
27 | 如何用 Flexbox 思路开发?跟自动布局比,Flexbox 好在哪?
28 | 怎么应对各种富文本表现需求?
29 | 如何在 iOS 中进行面向测试驱动开发和面向行为驱动开发?
30 | 如何制定一套适合自己团队的 iOS 编码规范?
31 | iOS 开发学习资料和书单推荐
32 | 热点问题答疑(三)
原理篇 (6讲)
33 | iOS 系统内核 XNU:App 如何加载?
34 | iOS 黑魔法 Runtime Method Swizzling 背后的原理
35 | libffi:动态调用和定义 C 函数
36 | iOS 是怎么管理内存的?
37 | 如何编写 Clang 插件?
38 | 热点问题答疑(四)
原生与前端共舞 (5讲)
39 | 打通前端与原生的桥梁:JavaScriptCore 能干哪些事情?
40 | React Native、Flutter 等,这些跨端方案怎么选?
41 | 原生布局转到前端布局,开发思路有哪些转变?
42 | iOS原生、大前端和Flutter分别是怎么渲染的?
43 | 剖析使 App 具有动态化和热更新能力的方案
用户故事 (1讲)
用户故事 | 我是如何学习这个专栏的?
结束语 (1讲)
结束语 | 慢几步,深几度
iOS开发高手课
登录|注册

43 | 剖析使 App 具有动态化和热更新能力的方案

戴铭 2019-06-20
你好,我是戴铭。今天,我来和你聊聊 iOS 开发中的动态化和热更新方案。
热更新能力的初衷是,能够及时修复线上问题,减少 Bug 对用户的伤害。而动态化的目的,除了修复线上问题外,还要能够灵活更新 App 版本。
要实现动态化,就需要具备在运行时动态执行程序的能力。同时,实现了动态化,也就具备了热更新能力。通常情况下,实现动态化的方案有三种,分别是 JavaScriptCore 解释器方案、代码转译方案、自建解释器方案。接下来,我就和你详细说说这三种方案。

JavaScriptCore 解释器方案

iOS 系统内置的 JavaScriptCore,是能够在 App 运行过程中解释执行脚本的解释器。
JavaScriptCore 提供了易用的原生语言接口,配合 iOS 运行时提供的方法替换能力,出现了使用 JavaScript 语言修复线上问题的 JSPatch,以及把 JavaScriptCore 作为前端和原生桥梁的 React NativeWeex开发框架。这些库,让 App 具有了动态化能力。
但是,对于原生开发者来说,只能解释执行 JavaScript 语言的解释器 JSPatch、React Native 等,我们用起来不是很顺手,还是更喜欢用原生语言来开发。那么,有没有办法能够解决语言栈的问题呢?
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《iOS开发高手课》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(14)

  • Jeffrey
    吹了2年了 都没有见过DynamicCocoa长啥样 什么时候准备开源
    2019-06-20
    1
    19
  • 方金峰
    我们之前的热更新方案是:将下发的原生代码,通过自己实现的代码解析引擎,将代码转换为AST树,然后存储在相关的模型里面,在通过一个上下文注入到runtime里面,当runtime回调到当前函数的时候,上下文从存储的相关模型取出各个参数,然后放到当前堆栈里面去执行相关的逻辑,执行问之后,在返回之前调用的地方,这里跟腾讯的OCS有点像.
    2019-07-02
    4
  • 大冯宇宙
    现在使用jspatch会被苹果剧拒么
    2019-06-21
    4
  • Du
    是不是结课了 ?

    编辑回复: 是的,周六就更新结束语了。但结束后,老师也会继续关注专栏,可能会再写些加餐文章,欢迎你继续关注哦

    2019-06-20
    3
  • 时光念你
    https://github.com/YPLiang19/Mango, 不知道是哪位大神写的语法类似OC的DSL,支持热更新.
    2019-09-01
    1
  • Dean
    Daynamic cocoasdk不会开源了,只是滴滴自己内部在用,如果开源,被广泛应用可能会被苹果盯上,而导致滴滴都不能用了
    2019-07-01
    1
  • Given
    老师,结束课程了以后怎么通过其他方式联系你,继续向你学习?

    作者回复: 可以关注我微博(@戴铭)和博客(https://ming1016.github.io)

    2019-06-21
    1
  • Link
    objc咋是强类型语言了?
    2019-07-25
  • 卓小土
    “只不过,ExecutionEngine 里的 Interpreter,是专门用来解释 LLVM IR 的,缺少对 Objective-C 语法特性的支持,所以无法直接使用。”
    ———————-
    没太懂。对于动态化方案来说,为啥非得要直接解释oc呢,把oc编译成ir,将ir下发给llvm解释器lli执行不就够了吗?
    2019-06-26
  • Geek_自来也大人
    DynamicCocoa也是转成js?我看不是,如果都是转成js通过系统自带的js解析器,那和jspatch没啥区别!
    2019-06-26
  • 抛到银河
    依稀记得孙源当时公布的开源计划,可惜被苹果打断了
    2019-06-26
  • AI
    我想问下作者,现在的热更新方案都是什么呢,swift选择的又是什么呢

    作者回复: 很多都是自建

    2019-06-25
  • 景迪
    DynamicCocoa 啥时候开源呀,等了好久
    2019-06-22
  • 毛成方
    不知不觉快结束了 持续学习 提高了技术认知 大干一场 蓝岛点个赞
    2019-06-21
收起评论
14
返回
顶部