配置熱更新
熱更新的原理:
這一步我就不上圖了,服務(wù)器上的chcp.manifest文件對(duì)比本地生成的chcp.manifest中的hash值,如果hash值對(duì)應(yīng)的文件發(fā)生更改,通過(guò)chcp.json中設(shè)置的文件存放地址炫乓,進(jìn)行文件流的下載更新。
安裝熱更新cli
- npm install -g cordova-hot-code-push-cli
安裝熱更新插件
ionic cordova plugin add cordova-hot-code-push-plugin
開(kāi)發(fā)使用可以安裝配套插件
cordova plugin add cordova-hot-code-push-local-dev-addon
使用熱更新
*插件安裝完畢,在www目錄下面峻堰,會(huì)生成兩個(gè)文件,chcp.json文件,跟chcp.manifest文件盅视。當(dāng)你運(yùn)行corodva-hcp server的時(shí)候捐名,你每更改一個(gè)文件,chcp.manifest跟chcp.json就會(huì)發(fā)生相應(yīng)的更改闹击。
*但是生成的地址會(huì)變成一個(gè)臨時(shí)的鏡像地址镶蹋,所以需要添加一個(gè)cordova-hcp.json 文件模板。這時(shí)候不需要啟動(dòng)cordova-hcp server赏半,直接啟動(dòng)cordova-hcp build
cordova-hcp.json文件內(nèi)容大致如下
"content_url": "http://yourserverAddress/www", //遠(yuǎn)程地址www后面不要加上/
"update": "now"http://分三種情況
// start - app啟動(dòng)時(shí)安裝更新. 默認(rèn)值.
// resume - app從后臺(tái)切換過(guò)來(lái)的時(shí)候安裝更新.
// now - web內(nèi)容下載完畢即安裝更新.
"release": "2017.07.01-15.52.14", //版本號(hào)
"min_native_interface": 1 //min_native_interface:版本設(shè)置贺归。
在config.xml我們?cè)O(shè)置的native-interface version=5 那么我們生成的就會(huì)是
"min_native_interface":5
- 插件安裝完畢,需要在config.xml文件里面添加
<chcp>
<native-interface version="1" />
<config-file url=".../chcp.json" />
<chcp/>
...為你的服務(wù)器地址断箫。
定義當(dāng)前版本:
<chcp>
<native-interface version="5" />
</chcp>
如果你應(yīng)用程序的版本比服務(wù)器的版本還高拂酣,那么插件將不會(huì)從服務(wù)器加載新的更新,默認(rèn)設(shè)置為1仲义。
自動(dòng)下載:
<chcp>
<auto-download enabled="false" />
</chcp>
定義插件是否允許下載更新婶熬。最初更新提取是自動(dòng)執(zhí)行的剑勾,可以禁用它,并通過(guò)JavaScript模塊手動(dòng)執(zhí)行赵颅。默認(rèn)情況下虽另,首選項(xiàng)設(shè)置為true。
自動(dòng)安裝:
<chcp>
<auto-install enabled="false" />
</chcp>
定義插件是否允許安裝更新饺谬。最初更新安裝是自動(dòng)執(zhí)行的捂刺,可以禁用它,并通過(guò)JavaScript模塊手動(dòng)執(zhí)行募寨。默認(rèn)情況下叠萍,首選項(xiàng)設(shè)置為true。
- 如果你的服務(wù)器绪商,無(wú)法接受跨域訪問(wèn)的話苛谷,熱更新插件很可能會(huì)不成功,所以可以更改服務(wù)器的配置格郁,使其接受跨域下的訪問(wèn)腹殿,插件才能從服務(wù)器上把文件給下載下來(lái)。
簡(jiǎn)單的說(shuō)明
可用事件
chcp_updateIsReadyToInstall - web內(nèi)容已經(jīng)下載并可以安裝時(shí)觸發(fā).
chcp_updateLoadFailed - 插件無(wú)法下載web更新時(shí)觸發(fā). 詳細(xì)錯(cuò)誤信息在事件參數(shù)里.
chcp_nothingToUpdate - 無(wú)可用更新下載時(shí)觸發(fā).
chcp_updateInstalled - web內(nèi)容安裝成功時(shí)觸發(fā).
chcp_updateInstallFailed - web內(nèi)容安裝失敗時(shí)觸發(fā). 詳細(xì)錯(cuò)誤信息在事件參數(shù)里.
chcp_nothingToInstall -無(wú)可用更新安裝時(shí)觸發(fā).
chcp_assetsInstalledOnExternalStorage - 插件成功把a(bǔ)pp內(nèi)置的web內(nèi)容拷貝到外置存儲(chǔ)中時(shí)觸發(fā). 你可能需要開(kāi)發(fā)調(diào)試時(shí)用到這個(gè)事件例书,也許不會(huì).
chcp_assetsInstallationError -插件無(wú)法拷貝app內(nèi)置的web內(nèi)容到外置存儲(chǔ)中時(shí)觸發(fā). 如果此事件發(fā)生了 - 插件不再工作. 也許是設(shè)備沒(méi)有足夠的存儲(chǔ)空間導(dǎo)致. 詳細(xì)錯(cuò)誤信息在事件參數(shù)里.
在需要使用熱更新的文件中聲明
declear var chcp:any //防止程序提示找不到chcp
更加詳細(xì)的說(shuō)明跟使用可以參考
http://blog.csdn.net/lovelyelfpop/article/details/50848524
或者
http://www.reibang.com/p/9e3cd54f5f97