不使用第三方抄课,用自己的服務(wù)器更新。
RN的熱更新其實(shí)就是替換App加載的js包跟磨,更新分為全量更新和增量更新攒盈;
????全量更新很簡(jiǎn)單,就是下載js包存到本地沦童,下次APP讀取新的路徑偷遗;
? ? 增量更新需要用到bsdiff第三方工具,bsdiff有分離和合并2個(gè)方法氏豌; ?bsdiff用分離方法 將新舊文件(jsbundle_orgin,jsbundle_new)生成一個(gè)差異文件(簡(jiǎn)稱patch包),將patch包放在服務(wù)器上供App下載泪电;
? ? App下載后再用bsdiff的合并方法將本地的原始jsbundle和patch包合并成新的jsbundle,存在本地相速,下次App啟動(dòng)就 ? ?????????讀取新的路徑;
上代碼:
? ? 分包:Mac可以使用終端命令苫拍,直接敲bsdiff回車旺隙,使用方法,會(huì)有提示bsdiff: usage: bsdiff oldfile newfile patchfile蔬捷,生成的patch文件可以上傳到自己的服務(wù)器,如果太大可以再壓縮成zip铡俐;
? ? 合包:下載bsdiff速妖, 可以參考現(xiàn)成的RN中文網(wǎng)的更新代碼,注意將里面的bspatch.c文件替換成剛剛下載的bspatch.c备恤,把bspatch.c里面的err函數(shù)改為return -1锦秒;err函數(shù)會(huì)觸發(fā)App崩潰;更新代碼邏輯需要花點(diǎn)時(shí)間慢慢看旅择;