CodePush

簡介

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

配置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文件中調(diào)用

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

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

  1. 在componentDidMount中調(diào)用sync方法睡毒,當APP啟動時會在后臺靜默更新

componentDidMount(){
codePush.sync();
}

3.到此位置来惧,所有的基本配置都已經(jīng)完成

部署

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 是否調(diào)試

如: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的更新的描述

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末豁跑,一起剝皮案震驚了整個濱河市廉涕,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌艇拍,老刑警劉巖狐蜕,帶你破解...
    沈念sama閱讀 211,639評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異卸夕,居然都是意外死亡层释,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評論 3 385
  • 文/潘曉璐 我一進店門快集,熙熙樓的掌柜王于貴愁眉苦臉地迎上來贡羔,“玉大人,你說我怎么就攤上這事个初」院” “怎么了?”我有些...
    開封第一講書人閱讀 157,221評論 0 348
  • 文/不壞的土叔 我叫張陵院溺,是天一觀的道長楣嘁。 經(jīng)常有香客問我,道長珍逸,這世上最難降的妖魔是什么马澈? 我笑而不...
    開封第一講書人閱讀 56,474評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮弄息,結果婚禮上,老公的妹妹穿的比我還像新娘勤婚。我一直安慰自己摹量,他們只是感情好,可當我...
    茶點故事閱讀 65,570評論 6 386
  • 文/花漫 我一把揭開白布馒胆。 她就那樣靜靜地躺著缨称,像睡著了一般。 火紅的嫁衣襯著肌膚如雪祝迂。 梳的紋絲不亂的頭發(fā)上睦尽,一...
    開封第一講書人閱讀 49,816評論 1 290
  • 那天,我揣著相機與錄音型雳,去河邊找鬼当凡。 笑死山害,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的沿量。 我是一名探鬼主播浪慌,決...
    沈念sama閱讀 38,957評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼朴则!你這毒婦竟也來了权纤?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,718評論 0 266
  • 序言:老撾萬榮一對情侶失蹤乌妒,失蹤者是張志新(化名)和其女友劉穎汹想,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體撤蚊,經(jīng)...
    沈念sama閱讀 44,176評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡古掏,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,511評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了拴魄。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片冗茸。...
    茶點故事閱讀 38,646評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖匹中,靈堂內(nèi)的尸體忽然破棺而出夏漱,到底是詐尸還是另有隱情,我是刑警寧澤顶捷,帶...
    沈念sama閱讀 34,322評論 4 330
  • 正文 年R本政府宣布挂绰,位于F島的核電站,受9級特大地震影響服赎,放射性物質發(fā)生泄漏葵蒂。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,934評論 3 313
  • 文/蒙蒙 一重虑、第九天 我趴在偏房一處隱蔽的房頂上張望践付。 院中可真熱鬧,春花似錦缺厉、人聲如沸永高。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽命爬。三九已至,卻和暖如春辐脖,著一層夾襖步出監(jiān)牢的瞬間饲宛,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評論 1 266
  • 我被黑心中介騙來泰國打工嗜价, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留艇抠,地道東北人幕庐。 一個月前我還...
    沈念sama閱讀 46,358評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像练链,于是被迫代替她去往敵國和親翔脱。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,514評論 2 348

推薦閱讀更多精彩內(nèi)容