iOS之热更新/热修复WaxPatch

3 篇文章 0 订阅

迄今为止,脚本语言中运行速度最快的是 Lua。Lua 语言完全使用 ANSI C 实现,其设计精巧,代码优美。Lua 的解释器总共在 200k 大小,而且运行速度大约是 C 语言的 1/5,语法比较简单,即使不是专业的编程人员也容易掌握。

 

WaxPatch 工作原理
Wax/WaxPatch 调用 Objective-C 并不是简单得对 Objective-C runtime 的 API 进行 1 对 1 得封装,而是把所有的 Objective-C 的对象\类\函数\等抽象成一个 WaxInstance,对 WaxInstance 进行操作。而 WaxPatch 则对 WaxInstance 的元表的 __newindex 属性进行改写,调用 class_replaceMethod 方法改写父类的函数实现,使用 forwardInvocation 机制把针对父类的调用方法转发到 Lua 改写的类方法里面。


WaxPatch 对于 Objective-C 的 block 支持不够完备。

WaxPatch 安全性解决方案

与JSPatch一样,所有的 Lua 补丁源码都应由秘钥进行加密。在客户端方面,使用公钥进行解密和验证码,避免非法的 Lua 补丁文件被执行。
 

WaxPath 与 JSPatch 的不同

1、WaxPatch:它把Lua脚本语言和原生Objective-C应用编程接口(API)结合起来,通过Lua脚本来调用OC
2、JSPatch:JS是通过JavaScriptCore.framework调用Runtime,来实现JS调用OC



JSPatch 优势:
1、JS比Lua在应用开发领域有更广泛的应用,目前前端开发和前端开发有融合的趋势,作为扩展的脚本语言,JS是不二之选
2、JSPatch更符合Apple的规则。iOS Developer Program License Agreement里3.3.2提到不可动态下发可执行代码,但通过苹果JavaScriptCore.framework或WebKit执行的代码除外,JS正是通过JavaScriptCore.framework执行的
3、使用系统内置的JavaScriptCore.framework,无需内嵌脚本引擎,体积小巧

4、支持block



JSPatch 缺点:
1、相对于WaxPatch,JSPatch劣势在于不支持iOS6,因为需要引入JavaScriptCore.framework,增加客户端的体积。
2、另外目前内存的使用上会高于wax,持续改进中。



JSPatch 存在风险:JSPatch让脚本语言获得调用所有原生OC方法的能力,不像web前端把能力局限在浏览器,使用上会有一些安全风险
1、若在网络传输过程中下发明文JS,可能会被中间人篡改JS脚本,执行任意方法,盗取APP里的相关信息,危及用户信息和APP
2、若下载完后的JS保存在本地没有加密,在越狱的机器上用户也可以手动替换或篡改脚本
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值