Cordova版本:8.0.0
更新APP平台:Android
操作系統:Windows
Cordova的熱更新,作用是把www內的變動部分更新到APP中,實現主程序不動,完成更新!!這個熱更新功能,對於IOS APP更有意義,因為,可以避免繁瑣的蘋果審核!!這個熱更新幾乎是所有Cordova開發都需要的功能!!!
Cordova熱更新插件:https://github.com/nordnet/cordova-hot-code-push
Cordova熱更新工具:https://github.com/nordnet/cordova-hot-code-push-cli
熱更新,如何實現的?Cordova的熱更新插件,靠什么去找到需要更新的程序呢?我們先不管這些問題了,先把上面插件和工具安裝上再說!
一,安裝Cordova熱更新插件和熱更新工具
1,安裝Cordova熱更新插件
cordova plugin add cordova-hot-code-push-plugin
或
cordova plugin add https://github.com/nordnet/cordova-hot-code-push.git
2,安裝Cordova熱更新工具,打開DOS窗口,輸入下面命令后回車
npm install -g cordova-hot-code-push-cli
假設,上面熱更新插件和熱更新工具都安裝完畢了,那么回頭看上面我提到的問題,應該搞清楚這些,那么就更容易理解和使用Cordova熱更新插件了!
二,了解熱更新重要文件和配置。
1,config.xml ,這個文件是Cordova工程配置文件,在Cordova工程的根目錄。這里面需要加入一個很重要的配置項:
<chcp> <config-file url="http://192.168.2.3/chcp.json" /> </chcp>
這個url,是Cordova熱更新配置文件,JSON格式的,存放於需要熱更新的程序根目錄中,而且必須能夠被Cordova以Http方式訪問到,否則無法更新!!!下面是我的配置信息截圖:
2,cordova-hcp.json,這是Cordova熱更新工具自動生成的文件,用於熱更新工具編譯。存放位置,Cordova工程根目錄。下面是我的這個文件的配置項目:
{ "name": "CordovaHotUpdate", "ios_identifier": "", "android_identifier": "io.cordova.hellocordova", "update": "start", "content_url": "http://192.168.2.3" }
兩個參數很重要,影響到是否可以更新和如何更新?
content_url:這是Cordova熱更新程序存放目錄,對應Cordova工程的www目錄,以后程序變化之后,使用Cordova熱更新工具編譯之后,直接把www目錄中所有文件覆蓋這個目錄中的所有文件就可以了。
update:這是熱更新的方式,通過它決定以什么樣的方式更新Cordova程序。
3,chcp.json,這是極其重要的一個文件,是否能夠熱更新,它起到至關重要的作用!這個文件存放目錄,熱更新程序的根目錄。Cordova熱更新插件進行熱更新,必須首先訪問這個文件,通過它來獲取熱更新程序存放目錄,以及熱更新方式!它的配置和上面的“cordova-hcp.json”基本一樣。這個文件是Cordova熱更新工具自動生成的文件。
4,chcp.manifest,這是極其重要的一個文件,是否能夠熱更新,它起到至關重要的作用!它里面記錄了程序的變動。這個文件是Cordova熱更新工具自動生成的文件。
三,實現熱更新。前提是已經安裝完了Cordova熱更新插件和幫助工具。
注意:所有命令均是在Cordova工程目錄下操作的,在DOS窗口執行命令之前,必須首先進入Cordova工程根目錄
1,生成熱更新相關配置文件。在DOS窗口,先進入Cordova工程根目錄,隨后在DOS窗口中輸入下面命令:
cordova-hcp init
這個時候,窗口中會出現多個問題,等待你輸入,最重要的是上面我提到的兩個update和content_url,把上面問題都回答完畢后,回車就會生成了cordova-hcp.json,存放在Cordova根目錄下!content_url,是非常重要的配置項,這是Cordova更新程序的在服務器上的存放目錄,必須保證這個目錄能夠以http方式被訪問,而且一定保證里面的chcp.json也能夠以http方式訪問(IIS應該設置一下才能訪問擴展名為json的文件)。
2,用熱更新幫助工具編譯當前程序。在DOS窗口中輸入下面命令。
cordova-hcp build
執行這個命令后,會很快編譯完畢,如果程序不大的話,隨后你會在www目錄中發現兩個文件:chcp.json和chcp.manifest,這兩個文件,是這個熱更新幫助工具自動生成的,不要手動去修改,否則如果修改錯誤了,熱更新也應該不能完成了!
3,編譯Cordova的APP。在DOS窗口輸入對應APP編譯命令,我是用Android做的APP,而且用真機連接測試,所以輸入下面命令,直接把編譯好的APP安裝到了我的真機上。
cordova run android--device
4,修改Cordova的程序,隨后再次用Cordova幫助工具編譯。編譯命令在上面:2
5,編譯完畢后,把所有www目錄,覆蓋測試服務器中對應的文件。
6,重新啟動APP。如果一切正常,那么你應該可以看到熱更新完成了,這次修改的文件已經在你APP中顯示出來了!這里也取決於你的update參數如何配置,具體配置說明,請參考官方文檔說明。
可能引起困惑問題:
1,熱更新服務器需要安裝什么軟件嗎?什么軟件都不需要安裝,只需要你能保證存放熱更新程序的目錄以http方式正常訪問,而且json格式的文件,也必須同樣以Http方式訪問到。
2,我只安裝熱更新插件,是否可以實現熱更新?應該可以,但是比較麻煩,那些配置文件手動處理不太方便,而且還有一個標明文件變動的文件,那個處理應該很費解,最好還是使用Cordova幫助工具。
3,Cordova熱更新幫助工具,有一個"server"命令,我是否需要?確實,這個工具提供了一個這樣的命令,命令如下:
cordova-hcp server
這個命令,是幫助你在本地實現一個http服務器,測試Cordova熱更新,也可以在開發時候使用這樣方式來更新程序,真正在互聯網上服務器實現熱更新時候,不需要這個命令。
最后截圖,是我的Android APP實現熱更新之后的圖片:
參考:
https://github.com/nordnet/cordova-hot-code-push
https://github.com/nordnet/cordova-hot-code-push-cli