概述

一说到热修复,可能很多人会觉得应该很复杂,很难用(我以前是这么觉得的。。。),实际使用起来蛮简单的,这里以一个小demo演示热修复是如何修复崩溃的,具体更深入的用法,可以看这个
https://github.com/bang590/JSPatch/wiki/JSPatch-%E5%9F%BA%E7%A1%80%E7%94%A8%E6%B3%95

实现原理:https://github.com/bang590/JSPatch/wiki/JSPatch-实现原理详解

使用

1.下载SDK

打开JSPatch网站,下载SDK:http://jspatch.com/Index/sdk

2.导入依赖库

新建一个项目,名为JSPatchDemo,将下载后的JavaScriptCore.framework文件拖到项目中,并导入libz.dylib(或libz.tbd) 和 JavaScriptCore.framework

在AppDelegate里配置,startWithAppKey需要配上自己的Key,在第三步会详细介绍。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {// Override point for customization after application launch.[JSPatch startWithAppKey:@"你的APPKey"];//用来检测回调的状态,是更新或者是执行脚本之类的,相关信息,会打印在你的控制台[JSPatch setupCallback:^(JPCallbackType type, NSDictionary *data, NSError *error) {}];[JSPatch setupDevelopment];[JSPatch sync];return YES;
}

在ViewController里写上一个方法为jsPatchTest,用于改变文本的文字。

#import "ViewController.h"@interface ViewController ()
@property (nonatomic, strong) UILabel *label;
@end@implementation ViewController- (void)viewDidLoad {[super viewDidLoad];_label = [[UILabel alloc] init];_label.font = [UIFont systemFontOfSize:14];_label.frame = CGRectMake(50, 100, 150, 50);_label.backgroundColor = [UIColor yellowColor];[self.view addSubview:_label];[self jsPatchTest];
}- (void)jsPatchTest {self.label.text = @"哈哈哈哈哈哈";
}@end

3、获取AppKey并发布

打开JSPatch官网点击左上角注册 -> http://www.jspatch.com/

点新增APP,随便填写APP名,如:

将AppKey填写到AppDelegate--StartWithAppKey中

点击添加版本,填写和工程目录的一致,如1.0

创建一个main.js文件并在里面写上以下代码

defineClass('ViewController', {jsPatchTest : function() {self.label().setText("label的text被改掉了");},
})

发布补丁

再次重新打开app,你会发现,会报http的错。。。在info.plist里加上如下代码,允许http访问

<key>NSAppTransportSecurity</key>
<dict> <key>NSAllowsArbitraryLoads</key><true/>
</dict>

总结

总体使用还是比较简单的,更多功能可以去文档中发掘

补充

1、可能很多人都不会写js补丁,好在JSPatch作者还为我们准备了另一个工具。
http://bang590.github.io/JSPatchConvertor/
这个工具可以帮助我们转换OC代码为JS

2、JS一定要加密,下面是方法截图和文档:

文档:http://jspatch.com/Docs/rsa

iOS JSPatch 热修复使用相关推荐

  1. QQ浏览器HD iOS 动态化/热修复方案QBDF(0) 【简书被冻结-搬运】

    原作时间:2019-2021年 此次共享,腾讯内网 / 外网同步发布. 内部代码地址:https://git.code.oa.com/fatboyli/QBDF 外部代码地址:GitHub - ven ...

  2. dlopen(), dlsym(), respondsToSelector:, performSelector:, method_exchan关于苹果禁用JSPatch(热修复一类),上架审核被拒问题

    应用很长一段时间没有上架了, 最近上了一次居然被打回来了,后续提交了很多次都被打回. 也跟苹果大大发了好几封邮件,但是依然无果 被拒原因具体如下 Hello, Thank you for your r ...

  3. QQ浏览器HD iOS 动态化/热修复方案QBDF解释器-从C89简化的BNF范式(4)【简书被冻结-搬运】

    原作:2019-2021年 此次共享,腾讯内网 / 外网同步发布. 内部代码地址:https://git.code.oa.com/fatboyli/QBDF 外部代码地址:GitHub - ventu ...

  4. QQ浏览器HD iOS 动态化/热修复方案QBDF解释器-词法分析(3)【简书被冻结-搬运】

    此次共享,腾讯内网 / 外网同步发布. 内部代码地址:https://git.code.oa.com/fatboyli/QBDF 外部代码地址:GitHub - ventureli/QBDF 两年前的 ...

  5. QQ浏览器HD iOS 动态化/热修复方案QBDF解释器-语法制导翻译与递归子程序设计(编译原理)(5)简书被冻结-搬运】

    原作时间:2019-2021年 此次共享,腾讯内网 / 外网同步发布. 内部代码地址:https://git.code.oa.com/fatboyli/QBDF 外部代码地址:GitHub - ven ...

  6. 【iOS开发】APP增量更新和热修复

    一.业务环境 公司提出我们的app每次更新不要全部下载, 只需要下载修改的部分. 二.实现方式 通过使用第三方平台,不用下载AppStore上的app,进而进行代码bug的修复. JSPatch Pl ...

  7. iOS热修复(热更新)技术预研

    热修复简介 对于iOS应用而言,app store的审核周期可能通常维持在1-2个星期.倘若一个线上的应用出现了一些bug,甚至是致命的崩溃,这时候假如按照苹果的套路乖乖重新发布一个版本,然后静静等待 ...

  8. 苹果「热修复门」事件复盘、分析和展望

    作者|徐川 编辑|小智 日前,有关苹果挥刀热修复的新闻引起了众多iOS开发者的热议.InfoQ 移动开发领域主编为此特意撰文,梳理事件前后经过,以及近期动向.后期可能影响,以供大家参考. 编者按 3月 ...

  9. 关于iOS 热更新(热修复)你必须知道的一种方法- JSPatch

    本文为转载文章 . 版权归原文所有. 原文链接:iOS 5分钟集成热修复(JSPatch) 前言 在iOS中有很多种热修复方案,在这里我就不一一介绍了 这里有一篇介绍热修复的文章: iOS中的HotF ...

最新文章

  1. 浏览器tab关闭事件_Python--使用Pyqt5实现简易浏览器(最新版本测试过)
  2. 比特币现金扬声器系列II将领先的比特币一起带来
  3. 【祝贺】norains同志在这里开《Windows CE大排档》书友会
  4. mysql pos点是什么,MySQL 5.6 主从报错一例
  5. 记事本写python怎么运行-从头学Python之编写可执行的.py文件
  6. Vue005_ 列表渲染
  7. BUUCTF--练习场-- basic--上传文件漏洞经典靶场upload-labs-- Pass1-3(Pass4简单尝试)
  8. Java旧版不断发展
  9. python处理路径时 sh: 1:Syntax error: ( unexpected
  10. python从数据库中取出文件保存到excel,csv表格中的办法:
  11. 基于python技术的超市仓库管理系统
  12. python利用PyQt5制作QQ空间登入客户端
  13. 基于Flutter的m3u8下载器
  14. OPENWRT:编译E8820V2总结
  15. Unity报错:InvalidOperationException:You are tring to read lnput using the UnityEngine. ……的解决办法
  16. 如何在Windows 10中打开设置?
  17. 阿里图标icon二次引入+ 图标引入后是黑色解决办法。
  18. 埃森哲2021财年第三季度全球营收达133亿美元;富士胶片创新解决方案新成员亮相CHINA PRINT 2021 | 全球TMT...
  19. 数据中心解决方案之灾备方案设计(下)
  20. 音圈电机模组选择直线导轨还是交叉导轨?

热门文章

  1. python爬取论文代码_Python selenium爬取微信公众号文章代码详解
  2. Python用正则表达式匹配ABAC和AABB的词语
  3. mysql去重函数的使用方法_MySQL中使用去重distinct方法的示例详解
  4. i2c传输距离_使用 ToF 传感器进行距离测量和手势识别的基本原理
  5. guava cache reload返回新旧值解析
  6. 【转载】中国煤层气资源量
  7. VB 计算自己程序段所用时间
  8. Java ==和Equals方法的比较
  9. 看咒语,知情节?他们用《哈利·波特》让AI学习剧透
  10. 图灵奖颁给深度学习三巨头,他们曾是一小撮顽固的“蠢货”