CodePush

簡介

CodePush是提供給React Native 和 Cordova 開發(fā)者直接部署移動應用更新給用戶設備的云服務。CodePush 作為一個中央倉庫,開發(fā)者可以推送更新到 (JS, HTML, CSS and images),應用可以從客戶端 SDKs 里面查詢更新。CodePush 可以讓應用有更多的可確定性,也可以讓你直接接觸用戶群。在修復一些小問題和添加新特性的時候,不需要經過二進制打包,可以直接推送代碼進行實時更新。

配置CodePush CLI(終端工具)

安裝:

npm install -g code-push-cli

注冊賬號:

運行該命令行會打開一個新的頁面,支持Microsofe和github賬號登陸,授權完畢會返回一個key值,終端輸入該key值,即登陸成功

code-push register

終端輸入key值

相關命令

code-push login 登陸
code-push loout 注銷
code-push access-key ls 列出登陸的token
code-push access-key rm <accessKye> 刪除某個 key值
在CodePush上注冊app

code-push app add <appName>

結果

相關命令:code-push app

add 在賬號里面添加一個新的app
remove 或者 rm 在賬號里移除一個app
rename 重命名一個存在app
list 或則 ls 列出賬號下面的所有app
transfer 把app的所有權轉移到另外一個賬號
安裝CodePush插件(iOS)

1.在項目根目錄下執(zhí)行

npm install --save react-native-code-push@latest

2.打開node_modules找到react-native-code-push,在該文件夾下找到CodePush.xcodeproj拖入Xcode的Libraries文件夾下

3.將CodePush.xcodeproj文件夾下的Products文件夾里的庫文件拖進 Link Binary With Libraries中

4.并在Link Binary With Libraries中添加libz.tbd

5.在Build Settings的Header Search Paths那一項中加入 $(SRCROOT)/../node_modules/react-native-code-push

iOS端設置

  1. AppDelegate.m中倒入頭文件

import "CodePush.h"

2.將

jsCodeLocation = [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];

替換成

NSURL *jsCodeLocation;

ifdef DEBUG

jsCodeLocation = [NSURL URLWithString:@"http://localhost:8081/index.ios.bundle?platform=ios&dev=true"];

else

jsCodeLocation = [CodePush bundleURL];

endif

js文件中調用

1.在入口文件(上手派項目是在Main.js文件中)引入

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

  1. 在componentDidMount中調用sync方法,當APP啟動時會在后臺靜默更新

componentDidMount(){
codePush.sync();
}

3.到此位置,所有的基本配置都已經完成

部署

App創(chuàng)建成功后會默認顯示兩個部署:Production 和Staging 。部署,簡單的說就是環(huán)境,比如ReactNative的jsbundle,iOS和Android是不可以共用一個的,所以我們需要生成兩個jsbundle,而我們可以通過部署這個功能,創(chuàng)建兩個部署:AppDemo-iOS 和AppDemo-Android ,并且App中分別使用這兩個部署的Key,之后我們上傳jsbundle只要分別上傳到這兩個部署中就可以了。每個部署都有一個對應的Deployment Key ,需要在項目中使用對應的Key。

1.創(chuàng)建部署(添加一個部署"MyDeployment"到App"HandsOn-Mobile"中)

code-push deployment add <appName> <deploymentName>

2.列出所有部署

code-push deployment ls <appName>

3.其他相關命令

code-push deployment rename <appName> 重命名
code-push deployment rm <appName> 刪除部署
code-push deployment ls <appName> 列出應用的部署情況
code-push deployment ls <appName> -k 查看部署的key
code-push deployment history <appName> <deploymentNmae> 查看歷史版本(Production 或者 Staging)
發(fā)布

1.打包js文件

react-native bundle --platform 平臺 --entry-file 啟動文件 --bundle-output 打包js輸出文件 --assets-dest 資源輸出目錄 --dev 是否調試

如:react-native bundle --platform ios --entry-file index.ios.js --bundle-output iOS1.js --dev false

2.發(fā)布

code-push release <appName> <bundle目錄> <targetBinaryVersion>
[--deploymentName <deploymentName>]默認staging
[--description <description>]更新描述(string)默認為null
[--mandatory]是否強制更新,默認false
[--disabled] 該版本客戶端是否可以獲得更新,默認為false
[--rollout]此更新推送的用戶的百分比(string),默認值為null

如:code-push release HandsOn-Mobile iOS1.js 1.0.0

其他說明

1.關于版本問題

2.回滾更新(Rolling Back Updates)

code-push rollback <appName> <deploymentName>
--targetRelease, -r 指定回歸到哪個標簽,默認是回滾到上一個更新 [string] [默認值: null]

示例:
code-push rollback MyApp Production "MyApp"中"Production"部署執(zhí)行回滾
code-push rollback MyApp Production --targetRelease v4 "MyApp"中"Production"部署執(zhí)行回滾,回滾到v4這個標簽版本

例子如下圖:

3.促進更新(Promoting Updates)??????

code-push promote <appName> <sourceDeploymentName> <destDeploymentName>

–description, –des 描述 [string] [默認值: null]
–disabled, -x 該促進更新,客戶端是否可以獲得更新 [boolean] [默認值: null]
–mandatory, -m 是否強制更新 [boolean] [默認值: null]
–rollout, -r 此促進更新推送用戶的百分比 [string] [默認值: null]

示例:
code-push promote MyApp Staging Production
"MyApp" 中"Staging" 部署的最新更新發(fā)布到"Production" 部署中

code-push promote MyApp Staging Production –des "Production rollout" -r 25
"MyApp" 中"Staging" 部署的最新更新發(fā)布到"Production" 部署中, 并且只推送25%的用戶

4.修改更新

code-push patch <appName> <deploymentName>

--label, -l 指定標簽版本更新,默認最新版本 [string] [默認值: null]
--description, --des 描述 [string] [默認值: null]
--disabled, -x 該修改更新,客戶端是否可以獲得更新 [boolean] [默認值: null]
--mandatory, -m 是否強制更新 [boolean] [默認值: null]
--rollout, -r 此更新推送用戶的百分比,此值僅可以從先前的值增加。 [string] [默認值: null]

示例:
code-push patch MyApp Production --des "Updated description" -r 50 修改"MyApp"的"Production"部署中最新更新的描述 ,并且更新推送范圍為50%
code-push patch MyApp Production -l v3 --des "Updated description for v3" 修改"MyApp"的"Production"部署中標簽為v3的更新的描述

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容