環(huán)境:
windows 10
RN:0.57.4
react-native-code-push 5.5.1
code-push-cli 2.1.9
后臺相關(guān)配置
一.安裝CodePush CLI
1.為了使用 Code Push發(fā)布熱更新,我們需要向微軟服務(wù)注冊我們的應(yīng)用。這部分工作
微軟提供了強大的命令行工具:CodePush CLI
2.安裝npm install -g code-push-cli
二.關(guān)聯(lián)賬號
1.輸入code-push register
會打開瀏覽器到指定網(wǎng)頁,然后選擇賬號授權(quán)华嘹,授權(quán)后會得到token
2.復(fù)制
token
,輸入待等待輸入的命令行中三.注冊應(yīng)用
1.code-push app add 你的App名稱 android react-native
2.每個 App 有不同的運行時環(huán)境雹姊,比如
Production
,Staging
等豌汇,我們也可以配置自己的環(huán)境。查看 App 的不同環(huán)境和部署狀況:code-push deployment ls app名稱
App相關(guān)配置
1.項目中需要使用react-native-code-push
包充岛,但要注意版本的兼容性問題保檐,不同的RN
版本需要使用不同的版本,詳見官方說明:react-native-code-push
2.輸入
npm info react-native-code-push
查看react-native-code-push
包版本信息,并根據(jù)對應(yīng)表崔梗,選擇需要安裝的版本
3.在RN
項目中安裝react-native-code-push
,npm install --save react-native-code-push
5.react-native link react-native-code-push
會詢問What is your CodePush deployment key for Android (hit <ENTER> to ignore)
6.查詢Staging
和Production
的Key
值夜只,code-push deployment ls App名稱 -k
7.打開
android/app/build.gradle
,配置buildTypes
buildTypes {
// 對應(yīng)Production環(huán)境
release {
...
buildConfigField "String", "CODEPUSH_KEY", '"從上述結(jié)果中復(fù)制的production值"'
...
}
// 對應(yīng)Staging環(huán)境
releaseStaging {
// 從 release 拷貝配置,只修改了 pushKey
initWith release
buildConfigField "String", "CODEPUSH_KEY", '"從上述結(jié)果中復(fù)制的stagingkey值"'
}
debug {
buildConfigField "String", "CODEPUSH_KEY", '""'
}
}
這里不同 buildType 的命名蒜魄,Staging 環(huán)境對應(yīng)的 buildType 就叫releaseStaging扔亥,要符合這樣的命名規(guī)范。
Debug 環(huán)境雖然用不到 CodePush谈为, 但是也要配置空的 Key 值旅挤,否則會報錯。
ReactNative項目中相關(guān)配置
React-Native-Code-Push 項目配置及更新策略
使用Code-Push Cli
更新
1.一般來說伞鲫,我們發(fā)布應(yīng)用首先會在測試環(huán)境進行穩(wěn)定性測試粘茄,通過后再發(fā)布到生產(chǎn)環(huán)境中
code-push release-react MyApp-iOS ios
code-push release-react MyApp-Android android
- 更多配置寫法
code-push release-react MyApp-iOS ios --t 1.0.0 --dev false --d Production --des "1.優(yōu)化操作流程" --m true
其中參數(shù):
--t為二進制(.ipa與apk)安裝包的的版本,
--dev為是否啟用開發(fā)者模式(默認為false)秕脓;
--d是要發(fā)布更新的環(huán)境分Production與Staging(默認為Staging)柒瓣;
--des為更新說明,
--m 是強制更新吠架。
關(guān)于code-push release-react更多可選的參數(shù)嘹朗,可以在終端輸入code-push release-react
進行查看。
坑記錄:--t后面的版本在ios和android存在差異
android
android在code-push發(fā)布更新的時候诵肛,版本獨立不影響的位數(shù)是兩位數(shù)。
舉例說明:
①默穴、versionName為2.1怔檩,和versionName為2.2的兩個app版本,
當(dāng)versionName=2.2的app發(fā)布codepush更新的時候蓄诽,受影響的只有2.2 和2.2.X薛训,X為正整數(shù)。
versionName=2.1是不會收到任何影響的仑氛,所以后續(xù)就需要創(chuàng)建兩條線路對不同的版本進行維護乙埃。
②闸英、由①可以知道,versionName=2.2.1和versionName=2.2.2兩個版本在獲取更新上介袜,獲取的是同個版本甫何。
當(dāng)versionName=2.2.2發(fā)布更新的時候,versionName=2.2.1的app同樣會受到影響接受更新遇伞。
ios
IOS在codepush發(fā)布更新時辙喂,版本獨立不影響的位數(shù)是三位數(shù)。
即iOS版本都是獨立不影響鸠珠,version=X.Y.Z巍耗,當(dāng)codepush發(fā)布更新時,只會影響與其X.Y.Z三位數(shù)完全相同的版本渐排。
-
輸入后報錯
進入
RN
項目中運行發(fā)布命令
此命令會將我們項目重新打包一次炬太,并上傳到code-push
注意事項
- 配置
code push
兩個環(huán)境的key的時候,在MainApplication.java
配置動態(tài)key - 打包命令
gradlew assembleRelease
gradlew assembleReleaseStaging
gradlew assembleDebug
- 修改后 更新命令
code-push release-react MyApp-iOS ios --t 1.0.0 --dev false --d Production --des "1.優(yōu)化操作流程" --m true
- 關(guān)于更新的版本問題