iOS JSPatch 熱修復使用

概述

一說到熱修復,可能不少人會以爲應該很複雜,很難用(我之前是這麼以爲的。。。),實際使用起來蠻簡單的,這裏以一個小demo演示熱修復是如何修復崩潰的,具體更深刻的用法,能夠看這個
https://github.com/bang590/JSPatch/wiki/JSPatch-%E5%9F%BA%E7%A1%80%E7%94%A8%E6%B3%95git

實現原理:https://github.com/bang590/JSPatch/wiki/JSPatch-實現原理詳解github

使用

1.下載SDK

打開JSPatch網站,下載SDK:http://jspatch.com/Index/sdk併發

2.導入依賴庫

新建一個項目,名爲JSPatchDemo,將下載後的JavaScriptCore.framework文件拖到項目中,並導入libz.dylib(或libz.tbd) 和 JavaScriptCore.frameworkapp

 

在AppDelegate裏配置,startWithAppKey須要配上本身的Key,在第三步會詳細介紹。jsp

- (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,用於改變文本的文字。ide

#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

三、獲取AppKey併發布

打開JSPatch官網點擊左上角註冊 -> http://www.jspatch.com/工具

點新增APP,隨便填寫APP名,如:網站

將AppKey填寫到AppDelegate--StartWithAppKey中atom

點擊添加版本,填寫和工程目錄的一致,如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>

總結

整體使用仍是比較簡單的,更多功能能夠去文檔中發掘

補充

一、可能不少人都不會寫js補丁,好在JSPatch做者還爲咱們準備了另外一個工具。
http://bang590.github.io/JSPatchConvertor/
這個工具能夠幫助咱們轉換OC代碼爲JS

 

二、JS必定要加密,下面是方法截圖和文檔:

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

相關文章
相關標籤/搜索