React-native集成CodePush熱更新android篇(附帶ios版地址) --------小白的天堂

React-native集成CodePush熱更新android篇
RN版本:0.59.5
react-native-code-push:6.2.0
開始集成:
註冊codepush:
1.安裝codepush cli(類似rn的腳手架,全局只需要安裝一次)

npm install -g code-push-cli

查看安裝版本
查看版本
2.註冊codepush賬號(此操作命令也是全局只需要執行一次即可)

code-push register

注意:當執行完上面的命令後,會自動打開一個授權網頁,選擇一個你有賬號的登錄即可,這裏我們使用github登錄

3.登錄成功後會在網頁上出現一個key,複製這個key到終端回車即可
在這裏插入圖片描述
這時候在終端會出現Successfully的提示,表示註冊成功,並自動登錄
此時可以使用code-push login來檢驗一下當前是否登錄:
在這裏插入圖片描述
此提示表示你已經登錄了,到此恭喜你創建賬號成功!!!

4.在codepush服務器註冊app(這裏android和ios是有區別的,需要分別註冊不同應用,生成不同的key,此處以android爲例)

	android:code-push app add <your app name> android react-native
	ios:code-push app add <your app name> ios react-native

此時會生成兩個key(用於後期集成rn中):Production:正式版使用;Staging:開發版使用
在這裏插入圖片描述
此時我們的應用已經在codepush服務器創建。

5.查看創建的應用:

code-push app list

在這裏插入圖片描述
我們剛剛只創建了一個應用,所以只有一個。
到此codepush服務配置完成!!!

React-native 集成codepush
1.首先確保rn項目能正常啓動

2.執行yarn add react-native-code-push安裝codepush庫(根據自己RN版本來安裝codepush庫)
在這裏插入圖片描述
3.rn0.6版本之前需要執行:

react-native link react-native-code-push;

rn0.6之後的版本會自動link項目,不需要執行此命令
此時在MainApplication.java中多了一條:
在這裏插入圖片描述
修改string.xml,添加:

<string moduleConfig="true" name="CodePushDeploymentKey">your app key</string>

在這裏插入圖片描述
如果此處你忘記的你key,不要急,我們可以通過codepush命令在查看具體環境的key:

code-push deployment ls <your app name> -k

然後把Staging 的key 複製過去即可

4.啓動項目,看下是否報錯,如果沒問題說明集成成功

5.在項目app.js中引入codepush

import CodePush from "react-native-code-push";
let codePushOptions = {
  //設置檢查更新的頻率
  //ON_APP_RESUME APP恢復到前臺的時候
  //ON_APP_START APP開啓的時候
  //MANUAL 手動檢查
  checkFrequency: CodePush.CheckFrequency.ON_APP_RESUME
};

然後在結尾添加:

App = CodePush(codePushOptions )(App)
export default App

這樣codepush集成完成,當然,這樣集成的更新爲靜默更新,表現爲啓動app後自動檢查版本,如果有新版本會下載,在下次啓動app的時候完成更新,自定義app更新下邊有講。

6.修改android/app/build.gradle中versionName爲三位數(例:1.0.0),然後打包app安裝到手機(當然debug模式也可以,不過這樣不能自動安裝bundle文件,沒法明顯看出有沒有更新,只能通過codepush來查看是否已安裝更新)

7.生成bundle文件:

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/app/src/main/assets/:爲bundle文件輸出目錄

8.上傳bundle文件到codepush服務器

code-push release-react <your app name> <平臺(android,ios)> --t <剛剛修改的versionName> --des <本次更新說明>

注:此處執行的命令是Staging環境的,如果要發佈Production環境,請先配置Production環境的key,然後執行以下命令:

code-push release-react <項目名稱 <項目平臺(android,ios)> --t <當前項目版本號(三位數)> --dev false --d Production --des <項目更新描述> --m true

其中–m true是強制更新,表現爲:進入app後,下載bundle文件,下載完成後立刻自動重啓更新,會明顯感覺到app閃了一下,如果改爲–m false,會在下次啓動app後更新

9.查看上傳的bundle詳情:

Prodeuction環境:code-push deployment history wenlvshe Production
Staging環境:code-push deployment history wenlvshe Staging

在這裏插入圖片描述
Lable:序號
Release Time:上傳時間
App Version:當前app更新版本
Mandatory:是否強制更新
Description:更新描述
Install Metrics:更新進度
Active:當前正在更新的
Total:更新完的設備數
Rollbacks: 更新出錯時出現,設備回滾數量
Active初始爲0%,total爲0,圖上狀態爲有一個設備已更新完成

10.修改更新提示(以上爲靜默更新的配置,如果要實現有提示框的項目按一下方法配置)
(1)在app.js中引入codepush的下方加入:

import CodePush from "react-native-code-push";

let codePushOptions = {
   //設置檢查更新的頻率
   //ON_APP_RESUME APP恢復到前臺的時候
   //ON_APP_START APP開啓的時候
   //MANUAL 手動檢查
   checkFrequency: CodePush.CheckFrequency.ON_APP_RESUME
};

(2)在componentWillMount中加入:

CodePush.disallowRestart();//禁止重啓
this.syncImmediate(); //開始檢查更新

(3)在componentWillMount中加入

  	componentDidMount() {
    	CodePush.allowRestart();//在加載完了,允許重啓
  	}

(4) 實現syncImmediate方法:

syncImmediate = () => {
    CodePush.sync({
      //安裝模式
      //ON_NEXT_RESUME 下次恢復到前臺時
      //ON_NEXT_RESTART 下一次重啓時
      //IMMEDIATE 馬上更新
      installMode: CodePush.InstallMode.IMMEDIATE,
      //對話框
      updateDialog: {
        //強制更新按鈕文字,默認爲continue
        mandatoryContinueButtonLabel: "立即更新",
        //強制更新時的信息. 默認爲"An update is available that must be installed."
        mandatoryUpdateMessage: "必須更新後才能使用",

        //是否顯示更新描述
        appendReleaseDescription: false,
        //更新描述的前綴。 默認爲"Description" -------
        descriptionPrefix: "更新內容:1",   //---------

        //非強制更新時,按鈕文字,默認爲"ignore"
        optionalIgnoreButtonLabel: '暫不更新',  //---------
        //非強制更新時,確認按鈕文字. 默認爲"Install"
        optionalInstallButtonLabel: '後臺更新', //---------
        //非強制更新時,檢查到更新的消息文本
        optionalUpdateMessage: '有新版本了,是否更新?',  //---------
        //Alert窗口的標題
        title: '更新提示'  //------------
      },
    } ,
    );
  }

(5)修改App = CodePush(App)爲

App = CodePush(codePushOptions)(App)

重新打bundle文件上傳即可看到更新提示框

到此react-native集成CodePush android端已全部完成

ios端集成請看下一篇:
https://blog.csdn.net/qq_41457238/article/details/106187575

*下邊分享一些CodePush常用命令:

npm install -g code-push-cli  #安裝codepush
code-push register  #註冊賬號
code-push login  #登陸
code-push logout  #註銷
code-push app add <appName> <platform> <language>  #添加項目
code-push release-react <appName> <platform>  #發佈更新
code-push app remove <appName>  #刪除項目
code-push app list  #列出賬號下的所有項目
code-push access-key ls  #顯示登陸的token
code-push access-key rm <accessKey>  #刪除某個access-key
code-push collaborator add <appName> <account>  #添加協作人員
code-push deployment add <appName> <deploymentName>  #部署一個環境
code-push deployment rm <appName>  #刪除部署
code-push release-react <項目名稱> <安裝平臺(android,ios)> --t <當前項目版本號(三位數)> --des <項目更新描述>	#Staging環境部署
code-push release-react <項目名稱> <項目平臺(android,ios)> --t <當前項目版本號(三位數)> --dev false --d Production --des <項目更新描述> --m true		#Production環境部署
code-push deployment ls <appName>  #列出應用的部署
code-push deployment ls <appName> -k  #查詢部署環境的key
code-push deployment history <appName> <deploymentNmae>  #查看部署的歷史版本信息
code-push deployment rename <appName> <currentDeploymentName> <newDeploymentName>  #重命名一個部署
code-push deployment clear <appName> Production or Staging		
#清除歷史部署記錄
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章