這里不涉及安裝,只是在安裝以后對于code push的一些終端操作。
安裝code Push
npm install -g code-push-cli
注冊code push
code-push register
終端輸入 code-push register,會跳轉(zhuǎn)授權(quán)網(wǎng)頁。在這個網(wǎng)頁可以選擇Github?;蛘呶④涀鳛槭跈?quán)提供者,不過我覺得90%的開發(fā)者都會選擇Github。授權(quán)完成后,CodePush會顯示你的Access Key,復(fù)制輸入到終端即可完成注冊并登陸。
ps.只要不主動退出(通過code-push logout命令),登陸狀態(tài)會一直有效。如果想再次登錄,在終端輸入 code-push login。如果想要獲取登錄的Access token 可以通過code-push access-key ls 獲取
創(chuàng)建應(yīng)用
創(chuàng)建iOS 應(yīng)用
code-push app add 應(yīng)用名稱(英文) ios react-native
eg: code-push app add CCBZZBIOS ios react-native
創(chuàng)建android應(yīng)用
code-push app add 應(yīng)用名稱(英文) android react-native
eg: code-push app add CCBZZBAndroid android react-native
查看創(chuàng)建的APP
code-push app ls
ps:這里著重說明在創(chuàng)建app成功以后會有兩個環(huán)境(release正式、staging測試)可以通過staging進行測試成功以后 在更新release。
打包、發(fā)布應(yīng)用
在上傳到APP Store等平臺時需先手動打出js包 ,再對應(yīng)用進行整體打包。
iOS 打包
首先在代碼文件的 ios文件夾下創(chuàng)建bundle文件 根目錄下 終端輸入
react-native bundle --entry-file index.js --bundle-output ./ios/bundle/main.jsbundle --platform ios --assets-dest ./ios/bundle --dev false
成功以后,按照安卓正常打包即可。
PS:版本指定的時候一定是分為3位 主版本 . 副版本 . 小版本 例如1.0.0 1.3.45 。
android打包
在文件根目錄下輸入
react-native bundle --entry-file index.js --bundle-output ./android/app/src/main/assets/index.android.jsbundle --platform android --assets-dest ./android/app/src/main/res/ --dev false 成功以后,接著在終端輸入
cd android && ./gradlew installRelease(打release包)
cd android && ./gradlew installReleaseStaging(打Staging的包)
版本已經(jīng)上線進行熱更新
其中參數(shù)--t為二進制(.ipa與apk)安裝包的的版本;--dev為是否啟用開發(fā)者模式(默認(rèn)為false);--d是要發(fā)布更新的環(huán)境分Production與Staging(默認(rèn)為Staging);--des為更新說明;--m 是強制更新,--t 表示版本號(這里版本號要與在用戶設(shè)備中安裝版本對應(yīng)) — m是強制更新 用戶界面顯示只有一個按鈕 強制更新 如果不填寫這個時候用戶可以忽略更新到個人中心進行更新。
eg: iOS
code-push release-react CCBZZB ios --t 1.0.0 --dev false --d Production --des "1.優(yōu)化操作流程" --m true
eg: android
code-push release-react CCBZZB-android android --t 1.0.0 --dev false --d Production --des "1.優(yōu)化操作流程" --m true
ps: mandatory(--m)是服務(wù)器傳給客戶端的,它是一個“動態(tài)”屬性,意思是當(dāng)正在使用版本v1的更新,然后現(xiàn)在服務(wù)器上有v2和v3的更新可用,v2的mandatory為true,v3的mandatory為false,此時去check update,服務(wù)器會返回v3的更新屬性給客戶端,這時服務(wù)返回的v3的mandatory為true,因為v3在v2之后發(fā)布的更新,它會被認(rèn)為是包含v2的所有更新信息的,竟然v2有強制更新的需求,那跳過v2直接更新到v3的情況下,v3也被要求強制更新。但是如果你當(dāng)前是在使用v2的更新包,check update時服務(wù)器返回v3的更新包屬性,此時v3的mandatory為false,因為對于v2而言v3不是強制要更新的。
查看更新信息情況
查看更新信息 CCBZZB為APP名字 Production為環(huán)境
code-push deployment h CCBZZB Production
? Active 成功安裝并運行當(dāng)前release的用戶的數(shù)量(當(dāng)用戶打開App就會運行這個release),這個數(shù)字會根據(jù)用戶成功installed這個release或者離開這個release(installed了別的更新包,或者卸載了App),總之用來獲得當(dāng)前release的活躍用戶量
? Total 成功installed這個release的用戶的數(shù)量,這個數(shù)量只會增不會減。
? Pending 當(dāng)前這個release被下載的數(shù)量,但是還沒有被installed,因此這一個數(shù)值會在release被下載時增長,在installed時降低。這個指標(biāo)主要是適配于沒有為更新配置立馬安裝(mandatory)。如果為更新配置了立馬安裝但是還是有pending,很有可能是App啟動時沒有調(diào)用notifyApplicationReady。
? Rollbacks 這個數(shù)字代表在客戶端自動回滾的數(shù)量,理想狀態(tài)下,它應(yīng)該為0,如果你發(fā)布了一個更新包,在installing中發(fā)生crash,code-push將會把它回滾到之前的一個更新包中
清除更新版本(全部清除)
code-push deployment clear CCBZZB Production
code-push deployment clear CCBZZB-android Production
代碼回滾(不能跨版本回滾)
代碼回滾到指定位置 V2 指的是代碼回滾到版本號
code-push rollback CCBZZB Production --targetRelase v2
code-push rollback CCBZZB-android Production --targetRelase v2
共同開發(fā)者操作
添加共同開發(fā)者
code-push collaborator add <appName> <collaboratorEmail>
移除開發(fā)者
code-push collaborator rm <appName> <collaboratorEmail>
查看開發(fā)者
code-push collaborator ls <appName>
共同開發(fā)中不能夠
- Rename or delete the app(重命名APP名字 刪除APP )
- Create, rename or delete new deployments within the app(創(chuàng)建環(huán)境 刪除環(huán)境)
- Clear a deployment's release history(清除更新記錄)
- Add or remove collaborators from the app (*)(添加開發(fā)者)