ionic中使用熱更新外掛cordova-hot-code-push
網上有很多關於這方面的資料和說明,但是我並沒有找到一個真正能夠搭建成功的案例。因此為了讓大家別再走彎路,在此我研究了一個上午搭建成功,以此來提高大家的工作效率。
cordova-hot-code-push是一款專門為混合cordova應用開發的一個熱更新外掛,那麼什麼是熱更新?熱更新顧名思義就是,在混合app程式碼(html、js、css)發生改變的時候,我們不需要重新對app打包再次進行釋出,而僅需要通知cordova-hot-code-push外掛,程式碼已經發生了改變,然後cordova-hot-code-push外掛就會根據我們指定的程式碼伺服器進行更新相關的程式碼。這樣的好處在於,客戶再也不用再到相關的app store去下載新版本的app了,只要客戶聯網開啟了app,app就會自動更新相關程式碼。這僅僅是用於程式碼更新上。如果我們所改變的不是程式碼,而是改變了webview或者說升級了ionic2到了ionic3,那麼cordova-hot-code-push還會自動更新嗎?毫無疑問cordova-hot-code-push已經無法再次進行自動更新了,但是它可以向客戶端推送新的app,並強迫使用者下載升級!好了,下面我就用ionic2的專案來說說怎麼搭建cordova-hot-code-push和使用。
本次搭建在OS系統中,服務端使用xampp本地搭建而成,當然windows使用者也不用緊張,因為操作步驟都是一樣的,在windows上你可以使用android模擬器進行測試。
1、首先建立一個ionic專案
當然你得確保你已經安裝了nodejs
安裝ionic和cordova
npm install -g cordova ionic
我根據官方教程,建立一個tabs專案,輸入如下命令
ionic start tab tabs
cd tab
npm install
ionic serve
這樣就建立好了ionic專案了。
2、安裝cordova-hot-code-push外掛(使用全域性安裝)
npm install -g cordova-hot-code-push-cli
接著在專案根目錄安裝cordova-hot-code-push-plugin外掛
cordova plugin add cordova-hot-code-push-plugin
3、確定本地伺服器ip地址
比如我安裝的是xampp伺服器軟體,我通過http://localhost可以直接訪問到伺服器根目錄檔案,但是如果我們在模擬器中使用http://localhost和127.0.0.1就無法訪問到伺服器了。因此我們得獲得到本機的ip地址
mac下在終端(命令列)輸入ifconfig即可看到如下畫面,找到你的ip地址:
Mac下檢視ip地址
windows下的朋友可以使用ipconfig命令進行檢視,或者在網路共享中心檢視本機IP地址
得到了Ip地址,那就直接使用ip地址訪問下本地的伺服器,看看能否正常訪問,在瀏覽器中敲入http://192.168.22.62/訪問看看,我的結果是這樣的
xampp本地搭建伺服器
如果你使用的是其他伺服器,請自行進行檢測。
4、建立cordova-hcp.json模板
cordova-hcp.json主要是為了方便我們以後的操作,不用再去修改www目錄下的chcp.json檔案,因此這樣做主要是為了提高工作效率
專案目錄結構
在tab專案根目錄下新建一個cordova-hcp.json檔案,輸入如下內容
{
"autogenerated": true,
"name": "tabs",
"min_native_interface": 1,
"content_url": "http://192.168.22.62/tabs",
"ios_identifier":"https://itues.apple.com/cn/***",
"update": "now"
}
引數
autogenerated 預設為true,自動升級的意思
name app的名稱
min_native_interface 原生殼(可以理解為原生webview版本),此版本由你自己定義版本號
content_url 更新檔案所在伺服器的目錄地址
ios_identifie 這個是ios app store的地址,作為測試,可以忽略,這個地址是打包後提交的地址
update 更新的情況,now|web內容下載完畢即安裝更新;resume|app從後臺切換過來的時候安裝更新;start|app啟動時安裝更新(預設值).
5、測試模板生成的www/chcp.json檔案是否正確
cd 到專案根目錄,執行下面語句
cordova-hcp build
執行後,就可以到www目錄下找到chcp.json檔案,檢視資訊,發現多了一行程式碼:"release": "2017.06.30-15.27.25",並且也多了一個chcp.manifest的檔案
{
"autogenerated": true,
"name": "tabs",
"min_native_interface": 1,
"content_url": "http://192.168.22.62/tabs",
"ios_identifier": "https://itues.apple.com/cn/***",
"update": "now",
"release": "2017.06.30-15.27.25"
}
其實就是個時間
chcp.manifest則是每一個檔案變動後的hash值,cordova-hot-code-push會去檢測這個值,如果這個值發生了變動則從伺服器下載相關檔案進行更新。
到此,我們的模板完成了。
6、修改根目錄config.xml
在中加入如下程式碼:
<chcp>
<native-interface version="1" />
<config-file url="http://192.168.22.62/tabs/chcp.json" />
</chcp>
config.xml檔案
native-interface version="1",這裡的1必須和chcp.json中"min_native_interface": 1 是一樣的,這個1代表了外殼(webview版本)版本。做外殼更新用到此引數。
7、在xcode或安卓虛擬機器上執行專案
mac上,輸入如下命令
ionic platform add ios
ionic cordova run ios(舊版本的ionic請執行ionic run ios)
windows上由於實現ios環境難,因此就使用android
ionic platform add android
ionic cordova run android(舊版本的ionic請執行ionic run android)
我執行的結果如下(我之前修改過預設專案的檔案):
ios下執行ionic專案
8、內殼(html、js、css)熱更新
首先我們修改專案下page/about.html頁面,更它增加一些文字,我這裡增加的是“this is about page”。
執行命令cordova-hcp build重新生成相關的檔案
我們在xampp/htdocs目錄下新建一個資料夾名稱為tabs,接著我們將ionic根目錄下的www內的所有檔案拷貝到xampp/htdocs目錄下。
在xcode或者安卓虛擬機器中將我們的ionic app kill掉,也就是強制退出。
再次開啟我們的app,你會看到about頁面已經發生了變化,剛才我們新增的文字出現了。
熱更新
真是屢試不爽啊,熱更新真的太方便了。不過這種更新僅僅只是內殼的熱更新。
9、外殼熱更新(待續...)
ionic中使用熱更新外掛cordova-hot-code-push
相關文章
- xLua熱更新外掛
- chrome 外掛開發中的熱更新問題Chrome
- Android App熱更新中的外掛化(ClassLoader、DexLoader)(1)AndroidAPP
- 記一次ionic使用file外掛cordova plugin file的坑Plugin
- React Native - react-native-code-push-熱更新外掛的使用[譯文]React Native
- [外掛擴充套件]更新IP外掛套件
- 給Ionic寫一個cordova(PhoneGap)外掛
- 從ClassLoader到Android外掛化以及熱更新原理Android
- jQuery中cookie外掛如何使用jQueryCookie
- 熱修復和外掛化
- Java熱部署外掛JRebelJava熱部署
- 【開發指南】(二)Ionic3開發工具外掛推薦
- Nuxt Kit 中的外掛:建立與使用UX
- Headshot外掛如何使用?Headshot外掛使用教程
- puppet使用rsync外掛,導致部分檔案未成功更新
- eclipse3.3外掛更新攻略Eclipse
- [外掛推薦] 使用 PHPStorm 中的 Laravel Plugin 外掛提升開發效率PHPORMLaravelPlugin
- fastadmin的【外掛管理】外掛使用教程AST
- 外掛化知識梳理(4) Small 框架之如何實現外掛更新框架
- Ionic2系列——在Ionic2中使用高德地圖地圖
- 【外掛更新日誌】新發布的1.5.0版本外掛中的增強模式,作用幾何?模式
- Metasploit中aggregator外掛無法使用
- PageHelper 分頁外掛使用中的那些“坑”
- HtmlWebpackPlugin外掛和HtmlWebpackInlineSourcePlugin外掛的使用HTMLWebPlugininline
- npm製作外掛、釋出及更新NPM
- [外掛擴充套件]jQuery二維碼外掛0.2【更新瀏覽器相容】套件jQuery瀏覽器
- [外掛擴充套件]視訊牆外掛VideoWall v0.2大更新套件IDE
- Head 外掛使用
- PhotoSwipe外掛的使用
- 個人使用外掛合集
- cordova-plugin-themeablebrowser 0.2.17 “ThemeableBrowser”ionic跳轉外鏈外掛在ios中heardBar會遮住內容的bugPluginiOS
- Android外掛化、熱補丁中繞不開的Proguard的坑Android
- Eclipse安裝lombok外掛及外掛使用案例EclipseLombok
- [外掛擴充套件]OT採集外掛[2014-10-7 更新]套件
- 解決Nessus外掛更新失敗問題
- Unity3D熱更新全書-何謂熱更新,為何熱更新,如何熱更新Unity3D
- 使用Autodesk Vault外掛嚮導輕鬆建立Vault外掛
- Android 外掛框架機制之預熱篇Android框架