ReactNative中熱更新使用經驗總結

ReactNative中熱更新通常都是用CodePush;react

CodePush官方github地址:https://github.com/Microsoft/...nginx

瞭解了CodePush是幹什麼的,就開始正題了;git

一、在你的App中集成react-native-code-push

react-native-code-push官方github地址 :https://github.com/Microsoft/...
按照官方文檔集成好;github

二、搭建你本身的熱更新服務器

根據你前面的瞭解,CodePush的官方服務器是Microsoft的,身在天朝的咱們用戶更新速度是無比慢的;因此須要本身搭建服務器,服務器控制權在本身手裏,也放心些;
開源服務器地址https://github.com/lisong/cod...
按照官方的教程,部署好;json

修改admin帳號的密碼

假如你熱更新服務器的地址是: http://hot.nero-zou.com; 那麼使用 默認帳號(admin)、密碼(123456)登陸進去;能夠獲得token: Gg9T4nXPpWzvIFKxHNsARwtoZhjY40svOXqog, 這個token在你後面發佈熱更新也是要用到的;
獲得token後,在命令行裏執行下面這個命令:
curl -X PATCH -H "Authorization: Bearer Gg9T4nXPpWzvIFKxHNsARwtoZhjY40svOXqog" -H "Accept: application/json" -H "Content-Type:application/json" -d '{"oldPassword":"123456","newPassword":"654321"}' http://hot.nero-zou.com/users/password
注意上面的 token 域名 密碼換成你本身的配置react-native

優化熱更新速度:

按照官方文檔: https://github.com/lisong/cod... 配置Storage mode 爲 qiniu或者s3, 我推薦使用 使用七牛,由於有10Gb的免費流量;
注意bucket綁定好域名,否則更新包下載速度會比較慢服務器

生產、開發環境分開

因爲我沒找到添加多個帳號、和根據帳號分配應用權限的方法,我是部署了兩個服務,一個對應生產環境,一個對應按開發環境;app

code-push-cli命令

中文文檔:https://github.com/Microsoft/...curl

經常使用的命令:測試

  • 登陸:code-push login http://hot.nero-zou.com:3000 ,若是配置了nginx反向代理,要注意帶上端口號登陸,由於nginx代理傳輸的數據大小有限制;在執行 code-push release-react時會碰到,帶上端口號就沒有Nginx代理這一層了;
  • 建立應用: code-push app add <appName> <os> <platform>
  • 發佈更新: code-push release <appName> <updateContents> <targetBinaryVersion>

PS: AppStore對 CodePush的應用沒限制;
PPS: 有了熱更新,改好bug給測試驗證方便多了只要不涉及原生代碼改動都不須要從新打包了;

一些經驗

  • 每次應用發佈新版本時,在應用打包好後,推個熱更新;目的是爲了減少後面客戶端熱更新包的大小;原理:code-push檢測更新的原理是比對本地bundle與服務器上熱更新包;若是徹底同樣就不會更新;後面增長的更新也只是增量包
相關文章
相關標籤/搜索