配置熱更新
熱更新的原理:
這一步我就不上圖了,服務器上的chcp.manifest文件對比本地生成的chcp.manifest中的hash值,如果hash值對應的文件發(fā)生更改,通過chcp.json中設置的文件存放地址,進行文件流的下載更新。
安裝熱更新cli
- npm install -g cordova-hot-code-push-cli
安裝熱更新插件
ionic cordova plugin add cordova-hot-code-push-plugin
開發(fā)使用可以安裝配套插件
cordova plugin add cordova-hot-code-push-local-dev-addon
使用熱更新
*插件安裝完畢,在www目錄下面,會生成兩個文件,chcp.json文件,跟chcp.manifest文件。當你運行corodva-hcp server的時候,你每更改一個文件,chcp.manifest跟chcp.json就會發(fā)生相應的更改。
*但是生成的地址會變成一個臨時的鏡像地址,所以需要添加一個cordova-hcp.json 文件模板。這時候不需要啟動cordova-hcp server,直接啟動cordova-hcp build
cordova-hcp.json文件內容大致如下
"content_url": "http://yourserverAddress/www", //遠程地址www后面不要加上/
"update": "now"http://分三種情況
// start - app啟動時安裝更新. 默認值.
// resume - app從后臺切換過來的時候安裝更新.
// now - web內容下載完畢即安裝更新.
"release": "2017.07.01-15.52.14", //版本號
"min_native_interface": 1 //min_native_interface:版本設置。
在config.xml我們設置的native-interface version=5 那么我們生成的就會是
"min_native_interface":5
- 插件安裝完畢,需要在config.xml文件里面添加
<chcp>
<native-interface version="1" />
<config-file url=".../chcp.json" />
<chcp/>
...為你的服務器地址。
定義當前版本:
<chcp>
<native-interface version="5" />
</chcp>
如果你應用程序的版本比服務器的版本還高,那么插件將不會從服務器加載新的更新,默認設置為1。
自動下載:
<chcp>
<auto-download enabled="false" />
</chcp>
定義插件是否允許下載更新。最初更新提取是自動執(zhí)行的,可以禁用它,并通過JavaScript模塊手動執(zhí)行。默認情況下,首選項設置為true。
自動安裝:
<chcp>
<auto-install enabled="false" />
</chcp>
定義插件是否允許安裝更新。最初更新安裝是自動執(zhí)行的,可以禁用它,并通過JavaScript模塊手動執(zhí)行。默認情況下,首選項設置為true。
- 如果你的服務器,無法接受跨域訪問的話,熱更新插件很可能會不成功,所以可以更改服務器的配置,使其接受跨域下的訪問,插件才能從服務器上把文件給下載下來。
簡單的說明
可用事件
chcp_updateIsReadyToInstall - web內容已經下載并可以安裝時觸發(fā).
chcp_updateLoadFailed - 插件無法下載web更新時觸發(fā). 詳細錯誤信息在事件參數里.
chcp_nothingToUpdate - 無可用更新下載時觸發(fā).
chcp_updateInstalled - web內容安裝成功時觸發(fā).
chcp_updateInstallFailed - web內容安裝失敗時觸發(fā). 詳細錯誤信息在事件參數里.
chcp_nothingToInstall -無可用更新安裝時觸發(fā).
chcp_assetsInstalledOnExternalStorage - 插件成功把app內置的web內容拷貝到外置存儲中時觸發(fā). 你可能需要開發(fā)調試時用到這個事件,也許不會.
chcp_assetsInstallationError -插件無法拷貝app內置的web內容到外置存儲中時觸發(fā). 如果此事件發(fā)生了 - 插件不再工作. 也許是設備沒有足夠的存儲空間導致. 詳細錯誤信息在事件參數里.
在需要使用熱更新的文件中聲明
declear var chcp:any //防止程序提示找不到chcp
更加詳細的說明跟使用可以參考
http://blog.csdn.net/lovelyelfpop/article/details/50848524
或者
http://www.itdecent.cn/p/9e3cd54f5f97