- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
JSPatch成长之路
JSPatch 成长之路
大纲
•
•
•
起步
发展
下一步
起步
App 线上 bug 修复周期长,成本高
(测试-打包-发布-审核-用户下载)
问题
waxPatch
业界解决方案
线程不安全
停止开发
不支持Block
不支持64位
没有文档
没有测试用例
难以调试
审核风险
lua语言陌生
JavaScript
原生JavaScriptCore引擎
JS 语言终端应用广泛
符合审核规则
更好的解决方案
有没有人试过?
JavaScriptBridge
需要编译前定义所有接口
臃肿
实用性低
更好的解决方案
Rollout
非开源
写法复杂
更好的解决方案
UIView.alloc()
JavaScriptCore
className “UIView”
methodName “alloc”
ObjC Runtime
Call [UIView alloc]
核心问题
期望的效果:
核心问题
语言规则:必须已经是对象成员函数
OC
遍历UIView方法
JS
构建UIView对象
UIView.alloc()
调用
•
•
方法太多 (NSObject 实例方法830个 类方法118个)
占用内存高 (NSObject 1.3M, UIView 2M)
核心问题
每一个类和方法都要事先定义好:
优化?
•
•
去除私有方法
JS构建继承链公用基类方法
✕ 占用内存依旧很高
思维定势
必须遵守语言规则
核心问题
UIView.alloc()
UIView.__c(“alloc”)()
•
•
正则替换代码
__c() 函数:模拟 Ruby/Lua 元方法机制
效果:
•
•
简洁 高效
内存占用 ↓99%
UIView.__c(“alloc”
)()
UIView.alloc()
调用OC方法
调用JS方法
UIView是OC对象
是
否
核心问题
预编译
•
•
•
•
•
调用/替换OC方法
支持64位
支持block
完整参数类型支持 (C指针 / Class / id* / struct)
支持C函数调用
……
完善功能
/bang590/JSPatch/wiki
发展
降低使用门槛
提高使用效率
如何做得更好?
Keep it simple and tiny
保持精巧,保持好用
易用性
安全问题
权限大,第三方攻击危害大
方案一:对称加密脚本,固定密钥
•
•
优点:简单
缺点:密钥存客户端,易被破解
安全策略
方案二:https传输
•
•
优点:安全性高
缺点:门槛高,部署繁琐
方案三:RSA签名验证
安全策略
私钥
脚本文件
MD5值
加密
MD5值
MD5值
解密
公钥
加密MD5值
脚本文件
加密MD5值
服务端
脚本文件
客户端
校验
1
2
3
4
5
6
优点:门槛低,通用性高,部署简单,安全性高
JPLoader
安全策略
后台搭建麻烦
JSPatch 平台
问题:如何支撑高并发?
JSPatch平台
JSPatch平台
平台用户
APP客户端
平台服务端
平台数据库
…
App请求
App接收
服务端CGI
处理请求参数
读取DB数据
组装数据返回
JSPatch平台
静态资源服务器
平台用户
平台服务端
返回json
App请求
静态资源服务器
{v:10}
App接收
①
…
APP客户端
① 文件名:{appKey} 内容:{v:10}
转换代码效率低
人工翻译整个方法内容
JSPatch Convertor
提高使用效率
•
•
•
•
保证易用性
JSPatch 安全方案 (JPLoader)
JSPatch 平台
完善的文档 / 原理解析文章
•
•
JSPatch Convertor
Extensions
总结
降低使用门槛
超过 2500 个 APP 已接入使用
下一步
React Native / Weex
•
•
•
前端 - 终端 (学习成本)
大型(环境配置,包大小)
组件 坑
JSPatch
•
•
•
学习成本低
微型
复用所有 OC 组件,坑少
使用JSPatch开发功能模块
开发效率 运行效率
问题
开发效率
JSPatchX
代码补全
开发效率
PlayGround
即时刷新
运行效率
确定瓶颈
进入 __c
调用 JS 方法
转换参数
callSelector
字符串转 Class Selector 调用
JPForwardInvocation
包装/转换参数
转换返回值类型
JS拿到返回值 调用结束
运行效率
进入 __c
调用 JS 方法
转换参数
callSelector
字符串转 Class Selector 调用
JPForwardInvocation
包
您可能关注的文档
- Joseph_Conrad 约瑟夫康拉德 英文介绍 详细版.ppt
- José Saramago - How Characters Became the Masters and the Author Their Apprentice.doc
- Joseph_Conrad_约瑟夫康拉德_英文介绍_详细版PPT.ppt
- JP摩根演讲模板.ppt
- Jquery(很好的PPT教程,技术较为全面,分享给大家).ppt
- Join in 学生用书1 Unit 10 Body(2,3)课件.ppt
- jQuery动画特效、显示与隐藏BUG(闪烁)解决方法.pptx
- JRC电子海图.doc
- js-match()数学函数使用法则.doc
- JSP+Servlet构建三层管理信息系统.ppt
最近下载
- 河南省郑州市第九十三中学2023-2024学年八年级上学期第一次月考物理试卷.docx VIP
- 河南省郑州经济技术开发区第四中学2023-2024学年八年级上学期第一次月考物理试卷.docx VIP
- 河南省郑州实验外国语中学2024-2025学年八年级上学期第一次月考物理试卷(无答案).docx VIP
- 成都鲜生活冷链物流配送优化与风险控制.docx VIP
- 棱镜中文翻译sunny.pdf VIP
- 河南省实验中学2024-2025学年八年级上学期第一次月考物理试卷及答案.pdf VIP
- 计算机Excel习题及答案.doc VIP
- 高标准农田建设项目 投标方案(技术方案).doc
- JBT 10215-2020 垂直循环类机械式停车设备.pdf VIP
- 自发性蛛网膜下腔出血的护理分析.pptx VIP
文档评论(0)