本文爲轉載文章 . 版權歸原文全部。git
原文連接:iOS 5分鐘集成熱修復(JSPatch)github
在iOS中有不少種熱修復方案,在這裏我就不一一介紹了swift
這裏有一篇介紹熱修復的文章:
iOS中的HotFix方案總結詳解服務器
我選擇的熱修復方案是JSPatch
我以爲JSPatch的優勢有:app
大神能夠看重點,若是是和我同樣的菜雞就能夠按照博客一步一步作,最後必定會成功讓JSPatch跑起來的jsp
OC:ide
Swift:測試
爲了方便label就直接在StoryBoard裏拖進來了(不喜歡拖控件的小夥伴能夠用代碼建立)網站
Swift中爲每一個變量和方法添加dynamic是保證Swift方法均可以被動態替換,這裏涉及到Swift Runtime的知識就不詳細講述了按例貼一篇文章:ui
Swift Runtime分析:還像OC Runtime同樣嗎?
OC
- (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; }
Swift
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { // Override point for customization after application launch. JSPatch.startWithAppKey("你的Appkey") JSPatch.setupCallback { (type, data, error) in print(type) print(data) } JSPatch.setupDevelopment() JSPatch.sync() return true }
OC
defineClass('ViewController', {
test : function() {
self.label().setText("label的text被改掉了"); }, })
Swift
defineClass('HotFixDemo.ViewController', {
test : function() {
self.label().setText("label的text被改掉了"); }, })
發現bug->在項目裏修復bug->將修改後的有問題的類和方法翻譯成js並上傳網站->發佈補丁
JS必定要加密,下面是方法截圖和文檔:
文檔:http://jspatch.com/Docs/rsa
加密方法: