1籍滴,安裝code-push命令行工具
npm install -g code-push-cli
2顷帖,注冊(cè)code-push賬號(hào)锻离。
code-push register
3虏冻,添加app
code-push app add? FreshToHome_Customer_iOS? ?ios? react-native
code-push app add? FreshToHome_Customer_Android? ?android? react-native
此處記下app測(cè)試和正式發(fā)布的key劝堪。
4冀自,項(xiàng)目根目錄下安裝code-push的依賴
yarn add react-native-code-push
5揉稚,將依賴link到原生項(xiàng)目里面,此時(shí)需要填寫(xiě)iOS和Android應(yīng)用的deploymentKey熬粗,這兩個(gè)deploymentKey分別寫(xiě)入到ios目錄下的info.plist文件(CodePushDeploymentKey)和android目錄下的strings.xml搀玖,這里填寫(xiě)staging下的key。
6驻呐,在JS項(xiàng)目里面添加更新檢測(cè)的代碼灌诅,推薦使用sync接口。
7含末,發(fā)布更新
這個(gè)命令自動(dòng)打包和上傳包到codePush的server猜拾,上傳到Staging
code-push release-react FreshToHome_Customer_iOS ios
code-push release-react <AppName> <platform>
[--bundleName]
[--deploymentName]
[--description]
[--development]
[--disabled]
[--entryFile]
[--mandatory]
[--sourcemapOutput]
[--targetBinaryVersion]
[--rollout]
里面有個(gè)--deployName這里可以設(shè)置deploy的環(huán)境,Staging? or? ?Production.
8答渔,版本轉(zhuǎn)移
此外关带,我們還可以選擇Staging里面的穩(wěn)定的版本,直接轉(zhuǎn)移到Production下沼撕,進(jìn)行發(fā)布宋雏。將Staging下的最后一個(gè)更新版本復(fù)制轉(zhuǎn)移到Production下,成為一個(gè)版本务豺。
code-push promote FreshToHome_Customer_iOS Staging Production
9磨总,查看部署狀態(tài):
查看app在Staging和Production下的部署狀態(tài):
code-push deployment ls FreshToHome_Customer_iOS
查看app在Staging狀態(tài)下的部署歷史
code-push deployment history FreshToHome_Customer_iOS Staging
10,版本回退笼沥。
code-push rollback? <AppName>? <deploymentName>
版本回退的本質(zhì)是產(chǎn)生一個(gè)新版本蚪燕。
11,修改更新奔浅。
code-push patch <AppName>? <deploymentName>
[--label]
[--description ]
[--disabled]
[--mandatory]
[--rollout ]
需要注意:
正常更新需要做到兩點(diǎn):
1馆纳,banary的版本,也就是app原生的版本沒(méi)有變汹桦。
2鲁驶,js的內(nèi)容要發(fā)生變化,如果沒(méi)有變化舞骆,將會(huì)發(fā)布更新失敗钥弯,將--noDuplicateReleaseError設(shè)置為true,js代碼沒(méi)有發(fā)生變化督禽,不會(huì)報(bào)錯(cuò)脆霎,依然發(fā)布更新會(huì)失敗。
參考文章:
http://www.reibang.com/p/f8689ccf0007
https://github.com/Microsoft/code-push/blob/master/cli/README-cn.md#%E5%8F%91%E5%B8%83%E6%9B%B4%E6%96%B0-react-native
https://segmentfault.com/a/1190000008591456#articleHeader9
code-Push功能列表:
安裝:npm install -g code-push-cli
注冊(cè)賬號(hào):code-push register
登陸:code-push login
注銷:code-push logout
添加項(xiàng)目:? code-push app add [app名稱]? ios
刪除項(xiàng)目:? code-push app remove [app名稱]
列出賬號(hào)下的所有項(xiàng)目:? code-push app list
顯示登陸的token:? code-push access-key ls
刪除某個(gè)access-key: code-push access-key rm?[accessKey]
添加協(xié)作人員:code-push collaborator add next@126.com
添加一個(gè)部署:code-push deployment add [AppName]? [DeployName]
刪除部署:code-push deployment remove?[AppName]? [DeployName]
列出應(yīng)用的部署:code-push deployment ls?[AppName]
查詢部署環(huán)境的key:code-push deployment ls? [AppName]? -k
查看部署的歷史版本信息:code-push deployment history? [AppName]? [DeployName]
重命名一個(gè)部署:code-push deployment rename [AppName] [CurrentDeployName]? [NewDeployName]
項(xiàng)目中使用需要注意的事項(xiàng):
1狈惫,每一個(gè)js發(fā)布睛蛛,都有對(duì)應(yīng)的發(fā)布號(hào),如v20,以及對(duì)應(yīng)的binary版本號(hào)玖院,如1.3.0菠红,1.3(需要注意,1.3和.1.3.0會(huì)被認(rèn)為是同一個(gè)binary版本)
2难菌,使用relese-react命令時(shí),如果不指定binary的版本號(hào)蔑滓,對(duì)Android的js包來(lái)說(shuō)郊酒,會(huì)從gradle的配置中去讀binary的版本號(hào),iOS會(huì)從對(duì)應(yīng)的info.plist中键袱,查到version的版本號(hào)燎窘。
3,指定js包的disabled為true時(shí)蹄咖,已經(jīng)安裝該js包的用戶褐健,會(huì)提示更新,這時(shí)會(huì)更新到該binary版本下的上一個(gè)js包澜汤。沒(méi)有安裝該js包的用戶蚜迅,不會(huì)安裝到這個(gè)js包。
4俊抵,命令行發(fā)布js包的時(shí)候谁不,更新描述,--description里面需要換行徽诲,使用 '\\n'刹帕。