RN實現增量包熱更新

RN的啟動機制是將JS代碼打包成為一資源文件,App啟動時加載這個bundle從而啟動RN項目。基于這一點,可以利用對這個bundle文件的下載合成從而實現熱更新。

這樣做的優點有:

1.JS方面的代碼可以跳過發布版本來進行更新,如果應用結構足夠好,理論上界面相關的改變都可以通過熱更新實現。

2.部分bug可以實時修復。

3.沒有熱修復原生部分代碼,不會被蘋果審核拒掉。(關于蘋果為什么會拒部分熱更新庫請自行了解)

缺點是:

1.原生部分改動及bug還需要依賴于發布版本。

下面是干貨:


首先,因為會存在不得不發布appstore版本的情況,所以我們可以利用這一點來減少版本管理的難度。每次發布appstore版本進行原生更新時,我們稱之為大版本更新,此時工程內保留的jsbundle為當前最新版本。當需要熱更新時,我們稱之為小版本更新,通過增量包與大版本更新時留在本地的jsbundle合成為最新版本。

然后,我們需要明確版本管理機制。因為客戶端的當前版本是未知的,我們需要知道客戶端應該下載哪一個版本的包來更新到最新版本。這里有兩種做法:

1.根據客戶端的版本請求服務端,服務端通過比對當前客戶端版本及最新版本生成增量包來讓客戶端下載,客戶端利用本地版本和下載的增量包合成最新版本。

2.客戶端保留兩個bundle文件,一個bundle是當前加載使用的版本,一個bundle是用于合成最新版的最低版本。服務端保留基于最低版本生成的增量包,客戶端只需要請求最新版本的增量包即可與最低版本合成最新版。

這兩種做法的優缺點也很明顯,我們舉例說明。假設我們當前大版本下有10個小版本。

第一種做法服務端會生成 10基于9的增量包,10基于8的增量包,10-7,10-6....10-1,9-8,9-7...2-1個增量包。

而第二種做法會生成10-1,9-1,8-1...2-1個增量包。

雖然當發布了最新版本之后,之前不需要的可以刪除(即第一種做法服務端保留的版本只會是10-9到10-1共9個版本),但是就消耗的資源來說第一種要比第二種多出生成時的消耗及刪除時的消耗。

而第二種做法客戶端是基于最低版本來更新的,所以第二種客戶端包會大一點,服務端保留的增量包體積會大一點。

明確了版本管理的原則后,根據業務需要我們就可以完成這個生成patch包及下載合成最新版本的流程了。

在進行熱更新有一點需要額外注意的地方,增量包合成之后時候,可能會出現bug導致直接閃退,此時需要增加一項版本回滾的功能保證客戶端的正常使用。思路是利用JS正常啟動時通知原生部分,來確認是否正常啟動,未正常啟動的時候進行回滾即可。

PS:涉及到圖片等資源的熱更新,可以利用更改引入路徑來解決,這里不再詳述。(曾經面試時傻得說的太過詳細,后來發現人家是來我這里套方案的- -累覺不愛)

如果能幫助到你,麻煩點個贊哦!


下面與正文無關,純粹一點個人感想,不感興趣可跳過。。。

在iOS這一行干了三年之后,發現技術處于一個不上不下的地方。一方面,接觸過的東西非常多,可以說常見App能用到的東西都使用過,但是問題也是接觸了太多東西,對技術不夠深入,很多東西都停留在使用階段,知其然不知其所以然。甚至很多都是模糊的,不夠明確的。另一方面,近段時間找工作的經歷也讓我認清自身技術上沒有特別亮眼的長處。

重新開始更新博客即有利于知識結構的重建,也有利于對知識進行一個總結回顧。希望能堅持下來,找準不足,發展特長。也愿所有與我一樣處于瓶頸期的道友們同樣能找到自身發展的道路并能堅持走下去。

PS:如果有公司缺iOS的,對我感興趣的幫忙內推一下哦,萬分感謝!聯系方式微信 woaicccrrrfff

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,739評論 6 534
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,634評論 3 419
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,653評論 0 377
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,063評論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,835評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,235評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,315評論 3 442
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,459評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,000評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,819評論 3 355
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,004評論 1 370
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,560評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,257評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,676評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,937評論 1 288
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,717評論 3 393
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,003評論 2 374

推薦閱讀更多精彩內容