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热更新

posted @ 2020-07-29 16:20  王志强zzz  阅读(1177)  评论(0编辑  收藏  举报