當前位置:
首頁 > 最新 > Cordova應用的熱更新方法

Cordova應用的熱更新方法

關鍵詞:Cordova;熱更新; hot codepush。

解決問題點:頻繁發布新版Cordova應用和手動版本的控制。

適用範圍:在Cordova應用下,更改了www文件夾下的頁面,js代碼,圖片等資源文件。

不適用於:添加新插件,更改Cordova版本,更改Android的版本等非限制在www目錄下的情況。

需要更改:對於現有的Cordova程序(Cordova版本5.0以上),需要添加插件cordova-hot-code-push,添加版本控制文件,修改config.xml文件,設定更新伺服器,配置用於新版本發布的web伺服器。

事情的起因是app上線後,經常面臨各種需求變動和bug的修復,導致經常性的發布新版本,所幸app使用限於公司內部,範圍不大,內容也不算複雜,而且僅限於Android,發布版本也不用上傳各個應用平台,直接在公司內網發布apk進行了更新,順便更新一下下載的二維碼,更改一下資料庫裡面描述的最新版本號,然後app裡面檢查版本後跟最新版本不一樣就打開瀏覽器跳轉apk鏈接就開始下載了。說不上多複雜的操作,但也是挺煩人的,因為一旦步驟裡面有任何步驟忘了,比如忘了更改apk內部的版本,忘了改資料庫等,都會導致更新失敗。後來重裝電腦,忽然發現,新系統編譯的apk簽名(用的是debug的簽名)與之前的不一樣,導致沒法直接替換更新。之後找到了老操作系統的那個debug用的license才解決這個問題(所以重裝系統之前的系統不要隨便就刪了)。

後來看到微軟的常用插件裡面有一個叫做cordova-plugin-code-push的插件,感覺需要更新一下我的項目,讓它能實現熱更新而不用每次去讓用戶下載新的apk文件。不過我們今天的主角並不是這個插件。

熱更新對於app的內容更新很重要。對於Cordova生成的應用來說,只是因為一個簡單的文字更改,腳本修復,圖標變化,都進行新版本apk的生成會浪費很多時間,也影響用戶體驗。現在讓我們使用熱更新插件來解決這個問題。

首先,在項目裡面添加插件cordova-hot-code-push,對於visual studio用戶來說,在plugin的custom選項裡面填寫上面的插件id就可以了。對於Cordova cli的用戶,執行下面指令:

cordova plugin add cordova-plugin-code-push@latest

安裝完成後,我們需要在當前的計算機添加它的cli用於生成版本控制。打開cmd窗口,執行指令:

npm install -g cordova-hot-code-push-cli

安裝好cli後,嘗試執行cordova-hcp server,看報錯信息,來決定是否需要安裝python2.7運行環境來支持cli的運行。

打開項目的根目錄(www文件所在的目錄),添加一個json文件,文件內容如下

{

"autogenerated": true,

"release": "2016.08.29-16.52.27",

"content_url": "http://www.123.com/www/",

"update": "start"

}

這是個模板文件,只是為了方便以後的操作。其中,content_url寫的是將來伺服器存放www發布的網頁地址,到www文件夾對應的一級即可。

打開cmd,切換到項目的根目錄(www文件所在的目錄),執行指令:

cordova-hcp build

這時候能在www目錄下找到chcp.json文件和chcp.manifest文件。chcp.json文件描述了新版本的信息,版本號等,而chcp.manifest描述了www下的文件列表,用以app判斷更新了什麼文件。

更改confg.xml,根節點下添加配置:

以上配置結束後,在伺服器上,將www文件夾拷貝過去,並配置成網頁可訪問狀態。例如在iis下,可以在default website添加虛擬目錄www,指定到拷貝過來的www目錄下。保證http://www.123.com/www/chcp.json路徑可以訪問(www.123.com換成伺服器的ip或者域名),當然換成其他的路徑也是可以的,只要對應的配置都更改一下就可以了。

以上操作結束後,不管是在原項目上加如此項功能,還是新項目,都需要發布新的apk文件,讓用戶安裝。此後,如果只更改了www下面的內容,只需重新執行指令

cordova-hcp build

並拷貝www文件夾覆蓋之前的伺服器上的版本即可。

對於更詳細的配置和更新控制,可以參考網站

https://github.com/nordnet/cordova-hot-code-push

以及它的wiki

https://github.com/nordnet/cordova-hot-code-push/wiki


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 小良子 的精彩文章:

TAG:小良子 |