澳门威利斯人_威利斯人娱乐「手机版」

来自 澳门威利斯人 2020-05-01 12:57 的文章
当前位置: 澳门威利斯人 > 澳门威利斯人 > 正文

JSPatch热修复入门,JSPatch简单使用

  1. 率先新建三个品类吧,这么些就无须自个儿说了啊,好吧 你说您懒得新建,那么到结尾下载作者的demo也行,先贴上小编的代码:

1、新建项目

图片 1

填写项目名称

起名那几个

什么是 JSPatch 平台?

JSPatch 供给使用者有叁个后台能够颁发和管制脚本,何况需求处理传输安全等布置职业,JSPatch 平台帮你做了那个事,提供了本子后台托管,版本管理,保障传输安全等功用,让您无需搭建二个后台,不须要关心陈设操作,只需引进贰个SDK 就能够及时利用 JSPatch。

援用自 JSPatch 的合韩文档(文书档案链接卡塔尔(قطر‎,上边讲一下 JSPatch 的选拔。

3.好了 ,将这几个库拖到花色里,然后再写上以下代码.

总结

完全使用或许比较简单的,更加多效果与利益能够去文书档案中挖潜

2、线上版本测量检验

热修复针没有错是线上版本,所以本地质度量试只是注解可行性,首要的还是线上 bug 的修补。上面我们进行线上测量检验。
到 JSPatch官网 注册,登陆,小编的 App,增多 App,获取 app key,加多 App 版本,公布补丁

图片 2

添加 App

图片 3

获取 appKey,添加 App 版本

图片 4

01AD1159-1A7F-4200-AFD1-31F33A9A99F1.png

交付之后点进去就能够张开补丁公布:

图片 5

补丁发布

注:有关开荒预览、灰度下发、条件发出请查看官方文书档案付出预览和灰度与标准发出刺探。补丁发表之后,对应版本的 应用程式 会伏乞下载这一个剧本保存在本地,以往每一趟运转都会实践这么些本子。至此线上 bug 修复完毕。
现在只是发表了补丁,而小编辈的测量检验 demo 里的代码还尚无退换,所以还无法举办线上测量检验。上面更改大家的测验代码。
-application:didFinishLaunchingWithOptions:调用 startWithAppKey:方法,参数为事情未发生前取得的 appKey。接着调用 sync艺术检查更新。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    //[JSPatch testScriptInBundle]; // 用于发布前测试脚本,测试完成后请删除,改为调用  startWithAppKey: 和  sync
    [JSPatch startWithAppKey:@"210a38abb83a9689"];
    [JSPatch sync];
    return YES;
}

注意 testScriptInBundle不能与 startWithAppKey:共同调用, testScriptInBundle只用于地点测量检验,测量检验截止后须求去除,项目中的 main.js 文件也要删减(可拷贝一份至桌面留作上传的补丁使用卡塔尔(قطر‎。其它,通过 JSPatch 平台上传的脚本文件都会保留在七牛云存款和储蓄上,而七牛云存款和储蓄的下载使用的是 http 合同,由此需求在项目的 info.plist 文件中加多如下字段(这些相应都晓得的...忽视卡塔尔国

图片 6

info.plist

OK,今后大家来运作 demo

图片 7

3788F246-7484-4D73-904B-BA424EB903BA.png

和本地质衡量试相符线上测量检验bug也修复成功。

那么下边正是将那些打好的补丁上盛传JSPatch官方网址了,前提是你早就登记了,新建二个接收,然后点击发表补丁(具体怎么注册,怎么开创应用笔者就掩没了,这些挺简单的,况兼你必需先注册技能得到这么些key):

2、写一段必定会崩溃的代码

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
    NSArray *arr = @"asd";
    arr[1];
}

此地本人在ViewController.m中给self.view点击时故意造个bug,NSArray指向NSString,然后取下标,然后运维,点击荧屏必崩

新建三个档期的顺序

图片 8

项目名称

然后在 ViewController.m 中写一段会诱致崩溃的代码(这里只是参考卡塔尔

#import "ViewController.h"

@interface ViewController ()

@property (nonatomic , strong) NSArray *arr;
@end
@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    NSLog(@"%@" , self.arr[2]);
}
- (NSArray *)arr {
    if (!_arr) {
        _arr = [NSArray array];
    }
   return _arr;
}

2.什么样集成JSpatch?

一、恐怕过两人都不会写js补丁,幸而JSPatch小编还为大家筹算了另叁个工具。

http://bang590.github.io/JSPatchConvertor/
这几个工具得以扶植大家转变OC代码为JS,这回,门槛够低了吧,哈哈

图片 9

JSPatchConvertor

1、测验本地脚本

本土测量试验 AppDelegate.m 按如下写法就可以,SDK 提供了 testScriptInBundle 方法用于支付景况下测量试验。

#import "AppDelegate.h"
// 引入头文件
#import <JSPatchPlatform/JSPatch.h>

@interface AppDelegate ()

@end

@implementation AppDelegate


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    /*
     用于发布前测试脚本。先把脚本放入项目中,调用后,会在当前项目的 bundle 里寻找 main.js 文件执行
     测试完成后请删除,改为调用  startWithAppKey: 和  sync
     */
     [JSPatch testScriptInBundle];
    return YES;
}

接下来在我们的 demo 中新建一个 empty 文件,叫 main.js,注意那是 JSPatch 平台标准,js 脚本文件名必需是 main.js。

图片 10

新建main.js

图片 11

命名

完了以后是那般

图片 12

2025675-86251bfd522e2882.png.jpeg

当今大家就能够透过在 main.js 写 js 修复 demo 中的 bug,代码如下:

require('NSArray');
defineClass('ViewController', {
            viewDidLoad: function() {
            self.super().viewDidLoad();
            self.setArr(["1","2","阿西吧","3"]);
            var str = self.arr().objectAtIndex(2);
            console.log("JSPatch调用" , str);
            },
            });

运行,OK

图片 13

调节台打印表示 bug 修复成功

- application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // 通过appKey启动(注意替换成自己的appkey) [JSPatch startWithAppKey:@"注册之后你的appkey"]; // 同步JSPatch官网控制台中的js补丁 [JSPatch sync]; return YES;}

补充

结语

对 JSPatch 切磋有限,这里只是介绍了 JSPatch 的幼功用法,有错误或不当的地点接待指正、沟通。借令你想上学更多 JSPatch 的用法能够到JS帕特ch 平台使用文书档案叩问。如果您想清楚 JSPatch 落成原理,看这里:JSPatch 达成原理精解。
正文 demo 后续会上传 GitHub,链接留在留言中。

4.集成完理解后,它是怎么修复线上bug的吗,其实正是通过大家往JS帕特ch这里传的补丁来修复的,大家就以地方大家的demo出现的bug来讲吧,我们要修复那些bug,该怎么写这么些补丁呢?4.1.1 使用xcode新建二个main.js的空文件,

开始

什么是 JSPatch ?

JSPatch 是叁个开源项目(Github链接卡塔尔,只要求在项目里引进异常的小的内燃机文件,就能够采用JavaScript 调用任何 Objective-C 的原生接口,替换大肆 Objective-C 原生方法。近日尤为重要用来下发 JS 脚本替换原生 Objective-C 代码,实时修复线上 bug。
除去修复 bug,JSPatch 也足以用来动态运行,实时改良线上 应用程式行为,或动态增进效果。

好了,你曾经济同盟并完了,是否so easy!别发急,很几个人说那些东西很难弄,难的不是融为一体,难的是怎么打补丁!!对,你没听错,便是打补丁,终于惠临最要害的一步了,怎么打补丁:

二、测验js文件是或不是看到效果

我们可以在大家的门类中测量检验大家书写的main.js是不是见效,以免把错误的js文件透露到正式版上,就影响用户的行使了。

//    [JSPatch startWithAppKey:@"asdasdasdasdasadasd"];
//    [JSPatch sync];
    [JSPatch testScriptInBundle];     // 用于测试,会在bundle下自动寻找main.js来执行

testScriptInBundle会自动物检疫索大家项目bundle下的main.js文件,跟main.js发到JSPatch调整台再sync的效应是一律的,测验截至记得改回来。

2、手动导入

下载 SDK 后解压,将** JSPatchPlatform.framework** 拖入项目中,勾选 "Copy items if needed",并确定保障 "Add to targets" 勾选了相应的 target。

图片 14

将SPatchPlatform.framework 拖入项目

pods 导入或手动导入SDK后加多信任框架:TACR-VGETS -> Build Phases -> Link Binary With Libraries -> 增加libz.dylib(Xcode7之后是libz.tbdState of Qatar和 JavaScriptCore.framework

图片 15

丰富依赖框架

本文由澳门威利斯人发布于澳门威利斯人,转载请注明出处:JSPatch热修复入门,JSPatch简单使用

关键词: 澳门威利斯人 IOS 简单 JSPatch iOS进阶