[IOS]JSPatch

用途

修复线上出现的紧急crash,热更新

例子

demo

原理解读

  • 在程序didFinishLaunch时候执行,[JPEngine startEngine],

startEngine做了对解析js代码模块的定义,放在JSContext对象中,举个例子,defineClass:
对脚本对象做parse。使用scanner分析传参,解析className,suplerClass,Method逐个定位获取参数,通过oc-runtime修改对象类

  • 获取热更新脚本,可以服务器动态下载,or本地加载

  • 解析脚本,[JPEngine evaluateScript:script],这边会用正则匹配一下方法转换成_c("funcName"),然后用javascriptcore做evaluateScript

posted @ 2016-07-05 17:24  西山翠冷  阅读(164)  评论(0编辑  收藏  举报