Cordova实现app热更新
本例主要实现App的热更新技术,不需要打安卓包或者苹果包,直接实现app内容的更新,前提是没有安装插件或者修改原生底层的部分,只更新web content的内容。主要借助cordova框架实现
1.安装插件
执行下面2个脚本
1 // cordova热更新插件 2 cordova plugin add cordova-hot-code-push-plugin 3 4 // 热更新工具 5 npm install -g cordova-hot-code-push-cli
2.生成配置文件 cordova-chcp.json
// 终端执行下面命令,项目根目录生成cordova-chcp.json cordova-hcp init
// 执行此命令,在终端会有引导步骤,有些可直接enter跳过,后面可以在生产的文件在做修改
说明:配置文件简介
{ "name": "cpcg", "autogenerated": true, "ios_identifier": "", "android_identifier": "", "update": "resume", "content_url": "http://192.168.5.17:1010/www/", "min_native_interface": 1 } name: 项目名称,可以随便 autogenerated:这个字段原先没有,需要复制过去,不然不会自动更新app update:app更新方式,有3种: "update": "start" // 在启动应用程序时安装更新 "update": "resume" // 在恢复应用程序(从背景移动到前景状态)或启动时,安装更新;默认使用 "update": "now" // 从服务器加载更新后立即安装 content_url:"http:// ...../www/" //静态文件服务器地址
min_native_interface: 1 //可用以做App升级(可以不填)
3.config.xml
<widget>
...
...
...
<chcp> <auto-download enabled="true" /> <auto-install enabled="true" /> <config-file url="http://........./www/chcp.json" /> <native-interface version="1" /> </chcp> /** config-file:配置文件 chcp.json 从服务器上加载的路径(必须的配置项) auto-download:是否自动下载热更新代码,默认是 true auto-install:是否自动安装热更新代码,默认是 true native-interface:当前 native side 的版本号
**/
</widget>
4.在www文件夹中生成chcp.json和chcp.manifest
// 执行下面命令 cordova-hcp build
// 执行该命令会在chcp.json文件中增加"release":"当前时间"
字段,用于和服务器文件比较,是否进行热更新
总结:上面基本配置全部完成后,具体的热更新操作流程是,首先,编译修改后的代码(cordova build 或者 框架其他的命令),会生成一个www的文件夹,然后执行cordova-hcp build,此命令会修改chcp.json的时间,然后将www文件夹替换到服务器上面,app会根据设定的热更新方式进行自动更新。
问题与其他:
1. 执行 cordoca-hcp init时,可能会报一个js证书验证的错误,在c盘的一个文件里面,只需要找到这个js文件并删除即可
2. https://github.com/nordnet/cordova-hot-code-push/wiki/JavaScript-module, 可以用js逻辑自己控制app热更新