资讯专栏INFORMATION COLUMN

iOS 远端代码下发: 使用 JS 设计 Patch

yeooo / 988人阅读

摘要:远端代码下发,有什么设计思路一般大家都用用别人的,总不好。老王造了个轮子,我来描述一下。代码,采用打包。苹果自己实现的用到了,这个库老王也使用了,,就是把一个语言暴露出来的接口,能让其他语言来调用。

iOS 远端代码下发,有什么设计思路 ?

一般大家都用 JSPatch?

用别人的,总不好。老王造了个轮子,我来描述一下。

老王 Patch, 挺先进的。JavaScript 代码, 采用 WebPack 打包。也参考了 JSPatch ,

怎么设计这个 Patch?

从原理上

Patch 主要是 干什么的呢?
一般大公司的 App 在运行的过程当中,业务线非常复杂,可能会出现一些问题。

这个时候,打补丁比较好

可以远端下发一个文件,开发的 App 通过 加载 这个文件,
实行 这个 代码 补丁。

这个样子,就可以通过远端, 把这个代码, 在开发的 app 运行当中,给执行过来,

OC 可以的,因为是动态语言,有 runtime ,所以才能搞这个 patch。

OC 有自己的消息转发流程。 Runtime 有 objc_msgSend_objc_msgForward
Runtime 有这两个方法,
这两个函数特性,让所有的函数调用都会走这两个方法。

这样就可以干一些 patch 的事情。
另外一点, 在 App 中植入了这个 patch ,他所使用的语言,能够被 eval 。 eval, 判断代码语句可以执行

这样 app 中有一个 context, 可以执行用于 patch 的语言。

本文中的 iOS 补丁方案直接运用 这个 JavaScriptCore,
就是使用 JavaScriptCore 提供的 JSContext.
能让 JavaScript 语言 和 Objective-C 之间,有一个接口。然后就可以 JavaScript 与 Objective-C 相互调用了。
( 苹果自己实现的 )

JSPatch 用到了 FFI,这个库老王 Patch 也使用了 FFI .

FFI, Foreign Function Interface ,就是把一个语言暴露出来的接口,能让其他语言来调用。
Java 的 JNI 标准,与 FFI 比较相似。
FFI ,首先遵从 Coding Convention ,就是定义遵守一些调用的协议和规定。
为什么要有 FFI 呢?

举个

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/95774.html

相关文章

  • 阿里如何实现100%容器化镜像化?八年技术演进之路回顾

    摘要:八年时间,阿里集团实现了内部容器化镜像化,经历了几代演进。容器技术在阿里的演进过程伴随着阿里技术架构本身的演进。 八年时间,阿里集团实现了 100%内部容器化镜像化,经历了几代演进。本文将从最初的架构开始,向大家介绍下阿里内部的容器化演化过程。 PouchContainer 现在服务于阿里巴巴集团和蚂蚁金服集团的绝大部分 BU, 包括交易&中间件,B2B/CBU/ICBU,搜索广告数据...

    tyheist 评论0 收藏0

发表评论

0条评论

yeooo

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<