当前位置: 首页 > news >正文

cordova热更新

全局安装cordova

npm install –g cordova

 

全局安装热更新cli

npm install -g cordova-hot-code-push-cli

 

android热更新步骤

创建cordova项目

Cordova create cordova-hot-push

安装热更新插件

cordova plugin add cordova-hot-code-push-plugin

 

添加热更新配置文件

cordova-hcp init 生成配置文件

 

 

最后生成的文件

 

 

解释一下里面的配置

Name :项目名字

Update:何时触发热更新,有几个选项(start(应用启动),resume(应用从后台恢复),now(下载更新后自动执行))

Content_url:此项配置非常重要。这是www目录存放的网络位置,当有更新的时候,应用会去这个目录下载对应文件。我的做法是在iis上新建一个hot虚拟目录,把www的内容复制进去。

 

生成文件映射配置文件

cordova-hcp build

 

 

文件映射配置文件生成后,会在www目录下生成两个文件

 

 

第一个chcp.json文件

 

 

我们可以看到,和热更新配置文件几乎一样,只是多了一个release。版本号。这个版本号一般以时间为单位。

第二个chcp.manifest文件

 

 

可以看到,里面是每个文件的hash映射。

Config.xml配置

添加配置

<chcp>

<config-file url="http://172.26.40.153/hot/chcp.json" />

<auto-download enabled="true" />

<auto-install enabled="true" />

<native-interface version="1" />

</chcp>

 

 

 

 

添加安卓平台

Cordova platform add android

 

打包并安装

Cordova build android

 

 

 

 

测试更新代码

 

假设我们现在要更新一个代码。把index.html里面随便加个内容

 

 

 

添加完成之后。保存代码。

 

 

 

这里解释一下更新的原理

当app启动的时候,会去检查本地的版本(release)和服务器上的release(chcp.json)是否一样。不一样的话就去对比文件hash,进行相应的文件更新。

 

所以我们要做的是,先把更新后的代码重新生成文件映射配置文件

 

 

可以看到我们的版本号变了。

 

接下来把www下面的文件拷贝到之前配置的热更新代码存放点(http://172.26.40.153/hot)的对应目录。(第一次拷贝所有文件,以后只需要拷贝修改过的文件到对应目录替换以及两个chcp相关的文件即可)

 

接下来去启动app试试看

 

 

成功!

 

注意事项

生成热更新配置文件的时候,update选项设置为start,一定要启动两次app才生效。根据我的推测,第一次是下载文件,第二次才生效。把Update配置项改成now不知道会不会立马生效,但是如果需要更新的文件较多,不知道会不会影响用户的使用,待测试。

 经过测试,安卓好像只支持http协议,不支持https协议的热更新

Ios热更新步骤

Ios热更新

Ios的热更新和安卓基本一样。不一样的地方只是Ios只能使用https协议进行热更新。因此我们之前得配置都需要配置成https协议。如https://172.26.40.153/hot  另外,我们要提前做的事情是在我们的服务器上颁发https证书并绑定,同时在ios设备上安装该证书,信任,才可以进行热更新。

 

转载于:https://www.cnblogs.com/coder-axin/p/9330589.html

相关文章:

  • Android混淆Can't find common super class of的解决方法
  • 【防火墙】DMZ
  • 3464. 【NOIP2013模拟联考6】秀姿势(sugata) (Standard IO)
  • Roslyn 语法树中的各种语法节点及每个节点的含义
  • 【剑指offer】22、链表中倒数第k个节点
  • CF786B Legacy
  • Mysql----管理知识
  • solr搜索分词优化
  • Windows server 2012配置WebDeploy发布网站
  • linux内核(五)虚拟文件系统
  • 如何屏蔽垃圾短信
  • 转载:手把手教你搭建 vue 环境
  • 在 win10 环境下,设置自己写的 程序 开机自动 启动的方法
  • 7-26 单词长度(15 分)
  • HDU 1258 Sum It Up(dfs 巧妙去重)
  • 【挥舞JS】JS实现继承,封装一个extends方法
  • C# 免费离线人脸识别 2.0 Demo
  • C++入门教程(10):for 语句
  • dva中组件的懒加载
  • Javascript Math对象和Date对象常用方法详解
  • JS+CSS实现数字滚动
  • python大佬养成计划----difflib模块
  • scrapy学习之路4(itemloder的使用)
  • Webpack 4x 之路 ( 四 )
  • 分享自己折腾多时的一套 vue 组件 --we-vue
  • 如何进阶一名有竞争力的程序员?
  • 使用 @font-face
  • 推荐一款sublime text 3 支持JSX和es201x 代码格式化的插件
  • 系统认识JavaScript正则表达式
  • 消息队列系列二(IOT中消息队列的应用)
  • Spring第一个helloWorld
  • 第二十章:异步和文件I/O.(二十三)
  • #中的引用型是什么意识_Java中四种引用有什么区别以及应用场景
  • (10)ATF MMU转换表
  • (AtCoder Beginner Contest 340) -- F - S = 1 -- 题解
  • (Java数据结构)ArrayList
  • (六)激光线扫描-三维重建
  • (实战篇)如何缓存数据
  • (转)VC++中ondraw在什么时候调用的
  • .NET Conf 2023 回顾 – 庆祝社区、创新和 .NET 8 的发布
  • .net使用excel的cells对象没有value方法——学习.net的Excel工作表问题
  • .NET文档生成工具ADB使用图文教程
  • .NET中的Exception处理(C#)
  • /etc/X11/xorg.conf 文件被误改后进不了图形化界面
  • /proc/stat文件详解(翻译)
  • /run/containerd/containerd.sock connect: connection refused
  • /var/spool/postfix/maildrop 下有大量文件
  • ::
  • @EnableAsync和@Async开始异步任务支持
  • [ 云计算 | AWS ] 对比分析:Amazon SNS 与 SQS 消息服务的异同与选择
  • [ 云计算 | AWS 实践 ] Java 如何重命名 Amazon S3 中的文件和文件夹
  • [1127]图形打印 sdutOJ
  • [3300万人的聊天室] 作为产品的上游公司该如何?
  • [3D游戏开发实践] Cocos Cyberpunk 源码解读-高中低端机性能适配策略
  • [AMQP Connection 127.0.0.1:5672] An unexpected connection driver error occured