美文网首页
2018-05-06 Patch, 代码补丁

2018-05-06 Patch, 代码补丁

作者: plantAtree_dAp | 来源:发表于2018-05-06 10:23 被阅读39次

主题: 怎么从原理上, 设计这个 Patch

王宇 patch 视频



Patch 是干什么的呢?

app 在运行的过程中,会出现一些问题。 你可以通过远端下发补丁文件,
你的 app 可以通过加载这个文件,就可以给有问题的代码打上补丁。



实现 Patch 的要素

  • app 使用的语言,有被注入的可能性。

相当于,通过远端下发代码,可以把在 app 中运行的代码,给覆盖/替换执行了。
Java / OC , 都具备这种特性。具备这种要素, 才能实现 patch.



  • 在 app 中植入,能够 eval Patch 使用语言的 context

JavaScript eval() 函数
eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码。

资料链接


在 app 中,植入了 patch.
所使用的语言, 都能被 eval 的。
换句话说,app 里面有一个 context, 可以执行 context 里面的语言。



拓展阅读:

当然, 你自己写一个 DSL ,可不可以呢?
可以的。

自己写的 DSL 难。
也许有一些局限性,可能有一些场景考虑不周。

用现成的语言,做 app 的热更新,就方便多了。

譬如:

  • Rua
  • Ruby
  • JS


iOS 可以利用的特性:

王宇 patch , 的原理, 同 JSPatch 的原理,基本相同。

ObjC 语言的 runtime

OC 特有的 ObjC runtime.

有一个自己的消息转发流程。

有自己的 msgSend , 和 msgForward

objc_msgSend 资料链接

objc_msgForward 资料链接

JSContext



自定义 "FFI"

node-ffi 资料

lua ffi 资料

预编译

相关文章

  • 2018-05-06 Patch, 代码补丁

    主题: 怎么从原理上, 设计这个 Patch 王宇 patch 视频 Patch 是干什么的呢? app 在运行的...

  • 编译支持EDNS client-subnet的dig

    下载解压BIND 下载补丁 这个patch貌似只有9.3.3版本 给代码打补丁 编译 --without-open...

  • Python monkey patch

    详见 什么是猴子补丁(monkey patch)

  • SCUM修复补丁,更新包概览

    SCUM预发行补丁列表 Patch 0.1.11.350 (02/15/2018, 2.6 GB)Patch 0....

  • Git常用命令

    生成patch补丁包,把最近的一个提交打成patchgit format-patch -n HEAD 先检查pat...

  • vue学习单词表

    truthiness:真实性 computed:计算的; resource:资源; mount:挂载 patch:补丁;

  • 猴子补丁(Monkey Patch)

    猴子补丁(Monkey Patch) 猴子补丁, 顾名思义...完全不知道是什么玩意有木有, 可能有些历史原因, ...

  • 猴子补丁(monkey patch)

    写了一段时间java切回写python偶尔会出现一些小麻烦,比如:在java中自定义对象变成json串很简单,调用...

  • git打补丁(patch)

    参考一参考二

  • patch

    patch,是打补丁的命令 patch -p0 (“p”指的是路径,后面的数字表示去掉路径的第几部分。"0"...

网友评论

      本文标题:2018-05-06 Patch, 代码补丁

      本文链接:https://www.haomeiwen.com/subject/ydgyrftx.html