iOS热修复框架JSPatch

什么是 JSPatch

Github:https://github.com/bang590/JSPatch

JSPatch是一个开源项目,只需要在项目里引入极小的引擎文件,就可以使用JavaScript调用任何Objective-C的原生接口,替换任意Objective-C原生方法。目前主要用于下发JS脚本替换原生Objective-C代码,实时修复线上bug。

例如线上 APP 有一段代码出现 bug 导致 crash:

@implementation JPTableViewController
...
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
  NSString *content = self.dataSource[[indexPath row]];  //可能会超出数组范围导致crash
  JPViewController *ctrl = [[JPViewController alloc] initWithContent:content];
  [self.navigationController pushViewController:ctrl];
}
...
@end

可以通过下发这样一段JS代码,覆盖掉原方法,修复这个bug:

//JS
defineClass("JPTableViewController", {
  //instance method definitions
  tableView_didSelectRowAtIndexPath: function(tableView, indexPath) {
    var row = indexPath.row()
    if (self.dataSource().length > row) {  //加上判断越界的逻辑
      var content = self.dataArr()[row];
      var ctrl = JPViewController.alloc().initWithContent(content);
      self.navigationController().pushViewController(ctrl);
    }
  }
}, {})

除了修复bug,JSPatch也可以用于动态运营,实时修改线上APP行为,或动态添加功能。JSPatch 详细使用文档见 Github Wiki

什么是 JSPatch 平台

官网:https://jspatch.com

JSPatch需要使用者有一个后台可以下发和管理脚本,并且需要处理传输安全等部署工作,JSPatch平台帮你做了这些事,提供了脚本后台托管,版本管理,保证传输安全等功能,让你无需搭建一个后台,无需关心部署操作,只需引入一个SDK即可立即使用JSPatch

上一篇 Android自定义支持多层嵌套RadioButton的RadioGroup
下一篇 iOS微信支付接入(Swift)
目录
文章列表
1 CSharp 多线程通信
CSharp 多线程通信
2
Spring Boot中Aspect实现切面(以记录日志为例)
Spring Boot中Aspect实现切面(以记录日志为例)
3
OKHttp3学习之二:HTTP 协议简介
OKHttp3学习之二:HTTP 协议简介
4
ZenCart安装配置及二次开发记录
ZenCart安装配置及二次开发记录
5
Gitlab目录层级超过6级报500错误不能显示文件列表的问题解决
Gitlab目录层级超过6级报500错误不能显示文件列表的问题解决
最新评论
一位WordPress评论者
一位WordPress评论者
2月12日
您好,这是一条评论。若需要审核、编辑或删除评论,请访问仪表盘的评论界面。评论者头像来自 Gravatar。