1, 安裝code-push (windows)
npm install -g code-push-cli
安裝后執行
code-push
安裝完成
2,創建code push 賬號
code-push register
然后會彈出一個注冊頁面,建議設置默認瀏覽器為chrome,可以選擇github或微軟賬號登入,登入成功后會顯示你的access-key,我們直接copy一下
輸入復制的access-key
3,code push 注冊app
以haowanyou-yc-proxy為例
code-push app add haowanyou-yc-proxy android react-native
我們把Production和Staging的key復制下來
4,集成Android開發環境
進入項目根目錄,執行
npm install --save react-native-code-push
安裝完成后,執行命令集成Android環境
react-native link react-native-code-push
一路回車,因為沒有ios工程所以跳過了。
用Android studio打開Andorid 工程,發現../app/build.gradle多幾行代碼:
(如果沒有的話,請手動添加,本人就沒有下面apply的那行)
setting.gradle也多了幾行
MainApplication.java也多了行代碼,需要替換下deploymentkey
修改../app/build.gradle,添加deployment key
MainApplication.java 修改deployment key:
到此,android集成code push完成
5, 配置React Native環境
更新app當然要選擇app的入口處更新,所以我們修改app.js,添加如下方法
為了判斷熱更是否成功,我們在app.js添加一個Text表示版本
打個生產包,在項目根目錄執行:
react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res
這樣在android工程的assets文件夾下會生成index.android.bundle文件
然后到我們android studio中把 buildtype改為release:
運行app
6,發布jsbundle到codepush
比如我們現在要升級了,我們模擬一下,把rn頁面的當前版本1.0.0的提示改為1.0.1:
然后我們在項目根目錄創建一個bundles文件夾,然后打一個jsbundle包到bundles文件夾中:
react-native bundle --platform android --entry-file index.android.js --bundle-output ./bundles/index.android.bundle --dev false
發布到code push
code-push release haowanyou-yc-proxy ./bundles/index.android.bundle 1.0.0 --deploymentName Production --description "更改版本為1.0.1" --mandatory true
// code-push release/debug <應用名稱> <Bundles所在目錄> <對應的應用版本> [--deploymentName <更新環境>] [--description <更新描述>] [--mandatory <是否強制更新>]
可以通過命令查看發布的版本
code-push deployment ls haowanyou-yc-proxy
我們再運行下app,就會看到先顯示1.0.0,然后頁面閃一下變成了1.0.1
再看下日志:
到此,熱更新完成。
Tips:
如果熱更希望彈出dialog提示,發布時可以設置 --mandatory false,以下幾種方式可以使用:
installMode對應三種更新策略:
IMMEDIATE
立即更新APPON_NEXT_RESTART
到下一次啟動應用時ON_NEXT_RESUME
當應用從后台返回時