iOS 熱修復的了解與使用

在iOS中有很多種熱修復方案,在這里我就不一一介紹了

這里有一篇介紹熱修復的文章:

iOS中的HotFix方案總結詳解

我選擇的熱修復方案是JSPatch

我覺得JSPatch的優點有:

非侵入式

上手快

相關服務成熟

上代碼

大神可以看重點,如果是和我一樣的菜雞就可以按照博客一步一步做,最后一定會成功讓JSPatch跑起來的

第一步:創建Demo,在ViewController里添加一個Label,聲明一個test方法來給Label.text賦值

OC:

Swift:

為了方便label就直接在StoryBoard里拖進來了(不喜歡拖控件的小伙伴可以用代碼創建)

Swift中為每個變量和方法添加dynamic是保證Swift方法都可以被動態替換,這里涉及到Swift Runtime的知識就不詳細講述了按例貼一篇文章:

Swift Runtime分析:還像OC Runtime一樣嗎?

第二步:打開JSPatch網站下載SDK:http://jspatch.com/Index/sdk

第三步:項目配置(這步稍微會有些復雜)

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

在AppDelegate里寫以下代碼:

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];returnYES;}

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)inprint(type)? ? ? ? ? print(data)? ? ? }? ? ? JSPatch.setupDevelopment()? ? ? JSPatch.sync()returntrue}

到這一步項目配置就完成了,下一步開始發補丁到項目中

第四步:打開JSPatch官網點擊左上角注冊 ->http://www.jspatch.com/

注冊或登錄

注冊

第五步:創建你的App,名字可以隨便寫,AppID也可以不填

第六步:點擊添加APP版本,創建一個App版本

介紹一下創建之后的APP:

appKey是之后在你項目中激活JSPatch要用到的

添加App版本 是按照你App的Version來創建的(如果version沒寫對會下載不到補丁)

第七步:創建一個main.js文件并在里面寫上以下代碼:

OC

defineClass('ViewController', {

test : function() {

self.label().setText("label的text被改掉了");

},

})

Swift

defineClass('HotFixDemo.ViewController', {? ? ? ? ? test : function() {self.label().setText("label的text被改掉了");? ? ? ? ? },})

Swift覆蓋方法和類的時候要加上項目名,所以規范應該是 項目名.類名(方法名) 注冊類的時候也要加上項目名

第八步:點擊剛剛創建的1.0,將保存好的JS上傳到JSPatch服務器上,

選擇文件選擇剛剛創建的main.js (上傳補丁的時候最少要有一個main.js 如果需要上傳多個文件點擊右側加號就可以了)

一定先勾選開發預覽,這樣才能保證測試成功

一切都操作完之后選擇提交

運行你的項目,如果命令行中顯示以下內容就代表你的你的項目已經更新補丁了

因為補丁是先下載再生效的,所以下一次運行你才能看到效果

可以看到我的代碼給label賦值為aaaa,通過JSPatch將label.text替換掉了

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 人人都說家家有本難念的經;清官難斷家務事。我想說,家人之間鬧矛盾不可怕,可怕的是親情綁架!而親情綁架是這個世界上最...
    沐晨雨rara閱讀 443評論 3 0
  • 基礎 SELECT[DISTINCT] column_name[TOP number|percent colum...
    crf1028閱讀 468評論 0 0
  • 今天的剽悍晨讀,給我們介紹了柔軟的大腦體操,來自《零秒思考》這本書。 看起來很神奇,用他介紹的方法,每天寫幾張A4...
    魯曼啊漫閱讀 205評論 0 1
  • 跌跌撞撞跑到蘭州來,本來是直接去青海的,好友報了蘭馬,不打算去跑了,參賽包要領了吧,這才有了蘭州的一天之游。...
    2017太陽石閱讀 171評論 0 0