node 版本 node-v10.18.0 ,node-v16.14.2-x64
添加插件 Cordova Hot Code Push
cordova plugin add cordova-hot-code-push-plugin
添加热更新工具 cordova-hot-code-push-cli
npm install -g cordova-hot-code-push-cli
添加cordova-hcp.json文件
此文件是用于方便生成www文件下chcp.json文件的内容。
执行命令(必须在项目根目录执行更新工具的命令)
cordova-hcp init
生成的默认应用程序配置文件(cordova-hcp.json)在项目根文件夹中。
执行时将要求您从命令行中填写一些项目首选项:
- Project name: 你现在的项目名称所需.
- Amazon S3 Bucket name:亚马逊上的S3桶的名字。可以跳过。
- Amazon S3 region: 亚马逊S3地区。可以跳过。
- iOS app identifier: 应用程序商店的应用程序ID。App升级是跳转应用商店进行升级。
- Android app identifier: 可以App在应用商城的地址,或者是apk的下载地址。
- Update method: 何时执行更新。
- start: 在启动应用程序时安装更新。
- resume: 在恢复应用程序(从背景移动到前景状态)或启动时,安装更新;默认使用。
- now: 从服务器加载更新后立即安装。
cordova-hcp.json文件内容:
{"name": "",//可为空"autogenerated": true,//如果不添加,热更新会不能使用"ios_identifier": "id123456789",//应用在App store id(可为空)"android_identifier": "",//应用在应用商城上的地址或者App的下载地址(可为空)"update": "start",//在应用启动时安装"min_native_interface": 1,//可用以做App升级(可以不填)"content_url":"http://************/cordova/www"//www文件在服务器上的地址
}
"autogenerated": true 这个值执行命令后是没有的需要自己手动添加,如果不添加网页内容更新将会无效。
4、在www文件下生成chcp.json 和 chcp.manifest文件
- chcp.json: 包含发布相关信息:热更新代码版本号,应用 native side 版本号等等
- chcp.manifest: 包含项目热更新代码(静态)文件信息:文件名和文件哈希值
执行命令
cordova-hcp build
执行此命令会在chcp.json文件中增加"release":"当前时间"
字段。(默认使用时间戳,格式为:yyyy.MM.dd-HH.mm.ss),插件将版本号进行字符串相等比较来判断是否存在新版本。
"release": "2017.06.07-16.30.20",//唯一web项目版本号,用与热更新web内容的更新。(必需)
5、config.xml 配置
最好写在底部方便以后配置修改
<chcp><auto-download enabled="true" /> //这里如果配置false 需要js代码配和更新<auto-install enabled="true" /> //这里如果配置false 需要js代码配和更新<native-interface version="1" /><config-file url="https://************/cordova/www/chcp.json" />
</chcp>
- config-file:配置文件 chcp.json 从服务器上加载的路径(必须的配置项)
- auto-download:是否自动下载热更新代码,默认是 true
- auto-install:是否自动安装热更新代码,默认是 true
- native-interface:当前 native side 的版本号
JS 手动更新代码
document.addEventListener('deviceready', onDeviceReady, false);function onDeviceReady() {chcp.fetchUpdate(function (error, data) {console.log("检测更新数据");console.log(error);console.log(data);if (error == null) {console.log('检测到更新...');chcp.installUpdate(function (error) {console.log("开始更新数据");console.log(error);if (error == null) {console.log('安装更新完成...');} else {console.log('安装更新失败...');}})}else{console.log('没有发现更新...');};})
}