iOS JSPatch 热修复使用
概述
一说到热修复,可能很多人会觉得应该很复杂,很难用(我以前是这么觉得的。。。),实际使用起来蛮简单的,这里以一个小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 热修复使用相关推荐
- QQ浏览器HD iOS 动态化/热修复方案QBDF(0) 【简书被冻结-搬运】
原作时间:2019-2021年 此次共享,腾讯内网 / 外网同步发布. 内部代码地址:https://git.code.oa.com/fatboyli/QBDF 外部代码地址:GitHub - ven ...
- dlopen(), dlsym(), respondsToSelector:, performSelector:, method_exchan关于苹果禁用JSPatch(热修复一类),上架审核被拒问题
应用很长一段时间没有上架了, 最近上了一次居然被打回来了,后续提交了很多次都被打回. 也跟苹果大大发了好几封邮件,但是依然无果 被拒原因具体如下 Hello, Thank you for your r ...
- QQ浏览器HD iOS 动态化/热修复方案QBDF解释器-从C89简化的BNF范式(4)【简书被冻结-搬运】
原作:2019-2021年 此次共享,腾讯内网 / 外网同步发布. 内部代码地址:https://git.code.oa.com/fatboyli/QBDF 外部代码地址:GitHub - ventu ...
- QQ浏览器HD iOS 动态化/热修复方案QBDF解释器-词法分析(3)【简书被冻结-搬运】
此次共享,腾讯内网 / 外网同步发布. 内部代码地址:https://git.code.oa.com/fatboyli/QBDF 外部代码地址:GitHub - ventureli/QBDF 两年前的 ...
- QQ浏览器HD iOS 动态化/热修复方案QBDF解释器-语法制导翻译与递归子程序设计(编译原理)(5)简书被冻结-搬运】
原作时间:2019-2021年 此次共享,腾讯内网 / 外网同步发布. 内部代码地址:https://git.code.oa.com/fatboyli/QBDF 外部代码地址:GitHub - ven ...
- 【iOS开发】APP增量更新和热修复
一.业务环境 公司提出我们的app每次更新不要全部下载, 只需要下载修改的部分. 二.实现方式 通过使用第三方平台,不用下载AppStore上的app,进而进行代码bug的修复. JSPatch Pl ...
- iOS热修复(热更新)技术预研
热修复简介 对于iOS应用而言,app store的审核周期可能通常维持在1-2个星期.倘若一个线上的应用出现了一些bug,甚至是致命的崩溃,这时候假如按照苹果的套路乖乖重新发布一个版本,然后静静等待 ...
- 苹果「热修复门」事件复盘、分析和展望
作者|徐川 编辑|小智 日前,有关苹果挥刀热修复的新闻引起了众多iOS开发者的热议.InfoQ 移动开发领域主编为此特意撰文,梳理事件前后经过,以及近期动向.后期可能影响,以供大家参考. 编者按 3月 ...
- 关于iOS 热更新(热修复)你必须知道的一种方法- JSPatch
本文为转载文章 . 版权归原文所有. 原文链接:iOS 5分钟集成热修复(JSPatch) 前言 在iOS中有很多种热修复方案,在这里我就不一一介绍了 这里有一篇介绍热修复的文章: iOS中的HotF ...
最新文章
- 浏览器tab关闭事件_Python--使用Pyqt5实现简易浏览器(最新版本测试过)
- 比特币现金扬声器系列II将领先的比特币一起带来
- 【祝贺】norains同志在这里开《Windows CE大排档》书友会
- mysql pos点是什么,MySQL 5.6 主从报错一例
- 记事本写python怎么运行-从头学Python之编写可执行的.py文件
- Vue005_ 列表渲染
- BUUCTF--练习场-- basic--上传文件漏洞经典靶场upload-labs-- Pass1-3(Pass4简单尝试)
- Java旧版不断发展
- python处理路径时 sh: 1:Syntax error: ( unexpected
- python从数据库中取出文件保存到excel,csv表格中的办法:
- 基于python技术的超市仓库管理系统
- python利用PyQt5制作QQ空间登入客户端
- 基于Flutter的m3u8下载器
- OPENWRT:编译E8820V2总结
- Unity报错:InvalidOperationException:You are tring to read lnput using the UnityEngine. ……的解决办法
- 如何在Windows 10中打开设置?
- 阿里图标icon二次引入+ 图标引入后是黑色解决办法。
- 埃森哲2021财年第三季度全球营收达133亿美元;富士胶片创新解决方案新成员亮相CHINA PRINT 2021 | 全球TMT...
- 数据中心解决方案之灾备方案设计(下)
- 音圈电机模组选择直线导轨还是交叉导轨?
热门文章
- python爬取论文代码_Python selenium爬取微信公众号文章代码详解
- Python用正则表达式匹配ABAC和AABB的词语
- mysql去重函数的使用方法_MySQL中使用去重distinct方法的示例详解
- i2c传输距离_使用 ToF 传感器进行距离测量和手势识别的基本原理
- guava cache reload返回新旧值解析
- 【转载】中国煤层气资源量
- VB 计算自己程序段所用时间
- Java ==和Equals方法的比较
- 看咒语,知情节?他们用《哈利·波特》让AI学习剧透
- 图灵奖颁给深度学习三巨头,他们曾是一小撮顽固的“蠢货”