[IOS]JSPatch
用途
修复线上出现的紧急crash,热更新
例子
原理解读
- 在程序didFinishLaunch时候执行,[JPEngine startEngine],
startEngine做了对解析js代码模块的定义,放在JSContext对象中,举个例子,defineClass:
对脚本对象做parse。使用scanner分析传参,解析className,suplerClass,Method逐个定位获取参数,通过oc-runtime修改对象类
-
获取热更新脚本,可以服务器动态下载,or本地加载
-
解析脚本,[JPEngine evaluateScript:script],这边会用正则匹配一下方法转换成_c("funcName"),然后用javascriptcore做evaluateScript