TTPatch一款轻量热更新框架
原理
基于JavaScript+runtime实现动态调用/替换/新增方法/
Class
背景
因为老东家58版本迭代块,需求多,导致很多需求开发质量以及测试质量不高. 线上经常会出现一些小bug很是头疼.所以有了搞一个热修复的轮子.
关于业界的成熟方案
下面列举一些个人了解,并不全面,请谅解.
lua.JavaScript.Oc作为脚本,滴滴方案(为开源).
其实热更新在游戏开发领域已经很成熟了,无论那一种实现方案思路都是类似的.

将Object-C Code转换成一种中间语言下发,然后本地执行中间语言通过Object-C的动态性实现达到动态调用的目的.
作为技术选型,因为在58以RN开发,所以对JavaScript所以选择JavaScript作为中间语言.
看到这里很多同学就会问啦,请问你跟JSPatch有什么区别?
其实原理都是
JavaScript当做中间语言实现的,但是技术细节是不一样的. 有一些参考了JSPatch的思路.
为什么JSPatch不能过审,你的TTPatch就可以过审?
首先
JSPatchgithub开源版本已经被下架,集成了开源版本的app基本也都难以通过上架. 但是收费版依然可以上架. 这就说明本身以JavaScript为中间语言的热更新手段并没有本堵死. 而且我了解到很多大厂也集成了热更新模块. 所以热更新不可行是因为JSPatch本身的原因. 具体可查看关于热更新被拒绝的审核条款.
关于上架
目前已经有多个
APP集成TTPatch成功上架.
项目进度
支持热更新 / 热修复80%场景
为了防止发生JSPatch的悲剧, 建议加群了解上架问题
QQ群:978337686 本项目会持续维护
项目地址 github
您的star就是我开发的动力.
关于上架
风险提示: 请配合服务器下发开关使用, 通过配置决定
APP是否初始化TTPatch模块
审核问题请加群:978337686
1. 功能列表
| 功能特性 | 备注限制 |
|---|---|
| 支持手动设置系统Block签名 | 如WKWebView一些系统级block缺失签名,无法动态调用 |
替换指定ObjectC方法实现 |
实例/静态方法均可替换实现 |
| 动态创建方法供Native/Js调用 | 需传入方法签名 |
支持block |
ObjectC传入JS, JS传入ObjectC均已支持 |
| 支持添加属性 | 为已存在的class添加属性 |
| 支持基础数据类型 | 非id类型,如int,bool均已支持 |
支持下发纯JS页面 |
纯JS代码映射原生代码,动态发布 |
| 实现协议 | 2020年04月01日新增 |
| 支持真机无线预览 | 详细说明 |
支持Native代码转成JS脚本 |
在线地址 |
| 支持原生网络请求 | 使用示例 |
2. 安装
CocoaPods pod 0.6.0
- 在 Podfile 中添加
pod 'TTPatch'。 - 执行
pod install或pod update。 - 导入 "TTPatch.h"
演示项目:Example.xcodeproj
运行效果图

在线下发补丁执行

重启后加载已下发补丁

您的喜欢就是我更新的动力