Cordova热更新实现

2018-05-24  本文已影响758人  lyzaijs

cordova-hot-code-push-plugin npm

cordova-hot-code-push github

安装

1. 命令行工具
npm install -g cordova-hot-code-push-cli

2.安装插件 
cordova plugin add cordova-hot-code-push-plugin

3.启用服务
cordova-hcp server

4.用户成功
Running server
Checking:  /Cordova/TestProject/www
local_url http://localhost:31284
Warning: .chcpignore does not exist.
Build 2015.09.02-10.17.48 created in /Cordova/TestProject/www
cordova-hcp local server available at: http://localhost:31284
cordova-hcp public server available at: https://5027caf9.ngrok.com

如果在虚拟机上进行开发,应用是可以直接访问到热更新服务器。但是真机开发,需要真机与服务器在同一个局域网内,并在config.xml配置服务器地址:

<chcp>
    <config-file url="https://IP地址/chcp.json"/>
</chcp>

相关配置

<auto-download enabled="false" />
<auto-install enabled="false" />

Defines if plugin is allowed to download updates. Originally update fetching is performed automatically, but you can disable it and do that manually through the JavaScript module.
即时,

注意:

更新流程

[图片上传失败...(image-68ea5d-1527143332164)]

准备:cordova插件有实现activity的生命周期,并会在对应的周期中实现相关业务
initialize -> onStart -> onResume -> onPause -> onStop -> onDestroy

流程详解

1.应用启动会自动实例化插件(HotCodePushPlugin.java 该插件配置的onload = true),解析基本配置并会删除旧版本的更新包

2.onStart 周期中会检测hotcodepush是否初始成功(即,是否将www下的文件复制到codepush下管理,如果没有会进行这个步骤。复制到指定目录下之后会发出 AssetsInstalledEvent事件)

3.接收到 AssetsInstalledEvent事件后,会向服务器请求最新版本(fetchUpdate)。服务器返回的版本信息与本地进行比对(更新比对的是打包时间字串,只要字符不相等),如果不相等,则会根据服务器给的地址进行下载

  1. UpdatesLoader 会进行下载,下载成功后会发出UpdateIsReadyToInstallEvent事件(这里会下载指定的update目录下)

5.接收到 UpdateIsReadyToInstallEvent事件,会将下载的更新包安装到hotcodepush中。安装成功会发出UpdateInstalledEvent事件

6.接收到 UpdateInstalledEvent 事件,则立即进行页面刷新redirectToLocalStorageIndexPage();

hotcodepush热更新流程.png
上一篇下一篇

猜你喜欢

热点阅读