1. 程式人生 > >iOS實現熱修復的幾種方案

iOS實現熱修復的幾種方案

最近,在調研熱修復技術,也稱作熱更新技術。由於蘋果稽核週期有時候比較長,這是公司無法忍受的,所以熱修復技術應運而生。經過查閱多方面的資料,進行如下總結,希望對大家有所幫助。

現在比較流行的熱修復技術:

一、使用JSPatch進行熱修復。

      JSPatch能做到通過JS呼叫和改寫OC方法。最根本的原因是 Objective-C 是動態語言,OC上所有方法的呼叫/類的生成都通過 Objective-C Runtime 在執行時進行,我們可以通過類名和方法名反射得到相應的類和方法,也可以替換某個類的方法為新的實現,還可以新註冊一個類,為類新增方法。JSPatch 的原理就是:JS傳遞字串給OC,OC通過 Runtime 介面呼叫和替換OC方法。

      看了一下JSPatch的原始碼,主要就是通過OC的runtime原理,使用JS語句實現動態更改OC原始碼的目的,類似C++中的多型性。

      JSPathch是一個開源專案,在github上,下載地址:JSPatch下載地址。裡邊有相關文件,簡單易懂。另外。這裡有一篇JSPatch作者寫的實現原理,解釋的還是蠻不錯的,部落格地址:JSPatch實現原理

      同時在這裡給大家一個比較好的網站 ,OC轉JS工具這是一個OC轉JS的一個工具網站。

二、使用ReactNative實現熱修復。

      ReactNative是facebook提供的一種開源框架,使用JS語法進行跨平臺開發,深受開發者青睞。直接使用ReactNative實現熱修復的好像不是很多,比較流行的是使用微軟的CodePush。

這個是CodePush 的官方網站地址,這個是CodePushGitHut地址。

三、使用Lua+Wax打補丁的方案實現熱修復。

      使用Lua+Wax打補丁的方案,App需要整合Lua直譯器和Wax框架(接近1M)。不過waxPatch對Block不太完善,多執行緒補丁也可能有問題,Wax也已經兩年沒人維護了,而且Lua除錯起來也不方便。