iOS 快速集成熱修復(fù)(JSPatch)

前言

項(xiàng)目上線以后, 后臺(tái)改變了數(shù)據(jù)結(jié)構(gòu), 導(dǎo)致某些功能使用不了, 直接閃退, 后臺(tái)越來越調(diào)皮了

正題

JSPatch 的優(yōu)點(diǎn)

非侵入式
上手快
相關(guān)服務(wù)成熟
使用簡單

1:上代碼

第一步:創(chuàng)建Demo, 在ViewController里面添加一個(gè)Label, 聲明一個(gè)test方法來給Label.text賦值

OC:

#import "Viewcontrller"

@interface ViewController ()

@prperty (nonatomic, weak) IBoutlet UILabel *label;

@end

@implementation ViewController

- (void)ViewDidLoad {
    [super ViewDidLoad];

    [self test];
}

- (void)test {
    self.label.text = @"測(cè)試";
}

@end

Swift:


import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var label: UILabel!
    override func viewDidLoad() {
        super.viewDidLoad()
        self.test()
    }

    dynamic func test() {
        label.text = "測(cè)試";
    }
}


2:打開JSPatch網(wǎng)站下載SDK

JSPatchSDK

JSPatch.png

3:項(xiàng)目配置

將解壓的SDK直接拖入工程中, 然后在TARGETS -> Build Phases -> Link Binary With Libraries -> + 添加libz.dulib(或libz.tad)和JavaScriptCore.framework.

導(dǎo)入.png
項(xiàng)目配置.png

在AppDelegate里寫以下代碼:

  • OC
#import <JSPatch/JSPatch.h>
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    [JSPatch startWithAppKey:@"你的AppKey"];
    [JSPatch setupDevelopment];
    [JSPatch sync];
    ...
    return YES;
}
@end
  • Swift
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
        JSPatch.startWithAppKey("你的AppKey")
        JSPatch.setupDevelopment();
        JSPatch.sync()
        ...
        return true
    }

至此 JSPatch 接入完畢,下一步可以開始在后臺(tái)為這個(gè) App 添加 JS 補(bǔ)丁文件了


4:打開JSPatch官網(wǎng)注冊(cè)

注冊(cè)

注冊(cè).png

5:創(chuàng)建你的app, 名字可以隨便寫, AppID可填可不填

![添加App.png](http://upload-images.jianshu.io/upload_images/2012472-a07eb158b0366576.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

6創(chuàng)建之后的APP

![添加版本.png](http://upload-images.jianshu.io/upload_images/2012472-8a493f963ce3f9f9.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
  • appKey是項(xiàng)目中用到的(一般第三方都有個(gè)appkey)
  • App版本必須與你App的版本保持一致, 否則會(huì)無效
Version.png

7:創(chuàng)建一個(gè)main.js文件并在里面寫上以下代碼

  • OC:
//  ViewController 需要修改的控制器
denfineClass('ViewController', {
    test: function() {
        self.label().setText("通過JSPatch修改");
    }
})
  • Swift
denfineClass('JSPatchDemo.ViewController', {
    test: function() {
        self.label().setText("通過JSPatch修改");
    }
})

Swift覆蓋方法和類的時(shí)候要加上項(xiàng)目名, 所以規(guī)范應(yīng)該是項(xiàng)目名.類名(方法名)注冊(cè)類的時(shí)候也要加上項(xiàng)目名


8:點(diǎn)擊剛剛創(chuàng)建的1.0, 將保存好的js上傳到JSPatch服務(wù)器上.

![發(fā)布.png](http://upload-images.jianshu.io/upload_images/2012472-f8ab9fead19ae873.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

選擇文件->選擇寫好的main.js文件->勾選開發(fā)預(yù)覽(測(cè)試ok全量下發(fā))->提交

出現(xiàn)以下內(nèi)容說明項(xiàng)目已經(jīng)更新補(bǔ)丁

更新補(bǔ)丁.png

因?yàn)檠a(bǔ)丁是先下載保存, 下次運(yùn)行才會(huì)生效

效果

效果.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 前言 在iOS中有很多種熱修復(fù)方案,在這里我就不一一介紹了 這里有一篇介紹熱修復(fù)的文章:iOS中的HotFix方案...
    軒轅小羽閱讀 4,689評(píng)論 18 103
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,359評(píng)論 4 61
  • I will always love you like a darling. 愿人們的愛恨,為你加冕. 致我最愛的...
    鐘離離離閱讀 973評(píng)論 0 2
  • 春圍著冬轉(zhuǎn) 婆娑,風(fēng)塵一世 成夏 我圍著你轉(zhuǎn) 歡笑,唏噓 成人 一切圍著空氣轉(zhuǎn) 有情的,無情的 成世 悲罷 喜罷 ...
    若彥閱讀 226評(píng)論 0 0
  • 在銷售崗的新員工考核現(xiàn)場(chǎng)杵了一天,終于到了我最想看到的場(chǎng)面---新工座談會(huì),提倡員工暢所欲言,事實(shí)上我失望了。 員...
    石榴燕妮閱讀 257評(píng)論 0 0

友情鏈接更多精彩內(nèi)容