——站在巨人的肩膀上
react-native-code-push熱更新
code-push賬號(hào)
- 1.安裝Code-Push的命令行工具:
npm install -g code-push-cli
- 2.注冊(cè)
code-push register
- 3.若已經(jīng)注冊(cè)過(guò)尿赚,則直接登錄
code-push login
運(yùn)行之后,會(huì)在瀏覽器中打開(kāi)一個(gè)返回token的頁(yè)面
復(fù)制token值到控制臺(tái)登錄
- 4.創(chuàng)建應(yīng)用
code-push app add <Your APP Name> <OS(ios/anroid/windows/macOS)> <platform(Objective-C / Swift/react-native/cordova/xamarin)>
如:
code-push app add MyApp ios react-native
也可以到code-push 后臺(tái)管理:https://appcenter.ms/apps/create進(jìn)行創(chuàng)建,
如下圖:
- 5.查看所有應(yīng)用
code-push app ls //code-push app list
- 6.查看你的deployment key
code-push deployment ls Delivery -k
如下圖:
7.在Xcode中填寫(xiě)你的key
- 8.添加測(cè)試
code-push deployment add Delivery Test
使用react-native-code-push
- 1.安裝
npm i react-native-code-push --save react-native link react-native-code-push
注意:需要根據(jù)當(dāng)前項(xiàng)目的react-native版本,指定特定版本,不指定則默認(rèn)安裝最新版塘慕,
具體可參考官方說(shuō)明文檔react-native-code-push
運(yùn)行react-native link react-native-code-push 正常情況會(huì)引入相關(guān)的庫(kù),如下圖:
若沒(méi)有配置成功,可手動(dòng)導(dǎo)入庫(kù)
- 2.引入
import codePush from "react-native-code-push";
- 3.組件中使用
App = codePush(App); // Wrap Your Component codePush.checkForUpdate('Your Deployment Key').then((update)=>{ // codePush.checkForUpdate().then((update)=>{ console.log('update is ',update); if(!update){ Alert.alert("提示","已是最新版本--",[ {text:"Ok", onPress:()=>{ console.log("點(diǎn)了OK"); }} ]); } else{ codePush.sync({ deploymentKey: 'Your Deployment Key', updateDialog: { optionalIgnoreButtonLabel: '稍后', optionalInstallButtonLabel: '后臺(tái)更新', optionalUpdateMessage: '有新版本了贬养,是否更新?', title: '更新提示' }, installMode: codePush.InstallMode.IMMEDIATE }); } });
注意琴庵,若使用react-native-navigation組件需要在screen注冊(cè)時(shí)误算,
用codePush包裹你的screen,
不然就會(huì)出現(xiàn)很惡心迷殿、很惡心的問(wèn)題——APP更新成功儿礼,重啟之后又回滾了,庆寺,蚊夫,
回滾了,懦尝,知纷,
回滾了,陵霉,琅轧,
真是心中一萬(wàn)只草泥馬奔騰而過(guò)啊~~~
具體如下:
Navigation.registerComponent('AboutUS', () => codePush(AboutUS));
- 4.打包release
react-native bundle --entry-file index.ios.js --platform ios --dev false --bundle-output ios/ios.jsbundle
- 5.發(fā)布到code-push Staging
code-push release-react MyAPP ios
- 6.從Staging發(fā)布到正式環(huán)境
code-push promote Delivery Staging Production
或者直接發(fā)布到正式環(huán)境
code-push release-react MyAPP ios -d Production
注意IOS是根據(jù)info中的版本號(hào)來(lái)決定是否更新,版本獨(dú)立不影響的位數(shù)是三位
即iOS版本都是獨(dú)立不影響踊挠,version=X.Y.Z乍桂,當(dāng)codepush發(fā)布更新時(shí),只會(huì)影響與其X.Y.Z三位數(shù)完全相同的版本,其他版本不會(huì)受影響。
- 7.查看歷史發(fā)布版本
code-push deployment history MyAPP Staging
雖然花了一下午時(shí)間來(lái)實(shí)現(xiàn)模蜡,又花了一個(gè)多小時(shí)整理了下漠趁,整個(gè)過(guò)程,除了獨(dú)立版本三位數(shù)和版本回滾問(wèn)題忍疾,沒(méi)遇到比較大的坑闯传。
總之,還是那句話——好事多磨~~~
——喂卤妒,喂甥绿,兄弟,你別吃我泡面啊~
參考鏈接:
http://blog.csdn.net/zhuangchuming/article/details/63681774
http://blog.csdn.net/sinat_17775997/article/details/69364463
http://www.zhimengzhe.com/IOSkaifa/239118.html
https://github.com/Microsoft/react-native-code-push/issues/1088
https://github.com/Microsoft/react-native-code-push
http://microsoft.github.io/code-push/docs/cli.html#link-4
http://www.reibang.com/p/67de8aa052af