转载《ionic 热更新 cordova-hot-code-push》
cordova-hot-code-push ,Cordova热代码推送插件提供了在应用程序中执行基于Web的内容的自动更新的功能。使用此插件可以更新存储在项目的www文件夹中的所有内容。
cordova-hot-code-push 插件的github url :https://github.com/nordnet/cordova-hot-code-push
更新流程
用户打开应用程序,Plugin get被初始化,并在后台线程中启动更新加载程序。更新加载器config-file
从config.xml
指定的网址载入并加载JSON。然后将release
加载的配置的版本与当前安装的配置进行比较。如果他们不同 - 我们去下一步,程序通过content_url
配置来加载清单文件。
1.创建一个ionic 项目
首先你先新建一个ionic项目,在这里我新建的是ionic版本是3.5

ionic start CordovaHotCodePush tabs cd CordovaHotCodePush npm install ionic serve

2.添加插件
添加cordova-hot-code-push插件
cordova plugin add cordova-hot-code-push-plugin
添加用于本地开发的插件
cordova plugin add cordova-hot-code-push-local-dev-addon
安装Cordova Hot Code Push CLI客户端:
npm install -g cordova-hot-code-push-cli
3.配置
找到项目目录下的config.xml文件,添加以下信息到config.xml文件中:
<chcp>
<config-file url="http://192.168.1.203:8121/chcp.json" />
</chcp>
这里说明下关于config.xml文件里<chcp></chcp>应该怎么配置。
配置文件url:
<chcp>
<config-file url="http://192.168.1.203:8121/chcp.json" />
</chcp>
URL指向的是我服务器更新文件的路径的chcp.json文件,在这里我是部署在iis 上,网站的物理路径我直接指向了项目的www文件夹。
在本地开发模式的情况下,如果config-file
未定义,则会自动设置为本地服务器上的应用程序配置路径。
定义当前版本:
<chcp>
<native-interface version="5" />
</chcp>
如果你应用程序的版本比服务器的版本还高,那么插件将不会从服务器加载新的更新,默认设置为1。
自动下载:
<chcp>
<auto-download enabled="false" />
</chcp>
定义插件是否允许下载更新。最初更新提取是自动执行的,但您可以禁用它,并通过JavaScript模块手动执行。默认情况下,首选项设置为true
。
自动安装:
<chcp>
<auto-install enabled="false" />
</chcp>
定义插件是否允许安装更新。最初更新安装是自动执行的,但您可以禁用它,并通过JavaScript模块手动执行。默认情况下,首选项设置为true
。
然后运行:
cordova-hcp sever cordova-hcp build
现在 在项目文件下的www文件里面我们可以看到两个新增的文件,chcp.json和chcp.manifest。
chcp.json就是我上面说的config.xml里 config-file url 指向的那个chcp.json文件。
接下来详解一下chcp.json里面有什么东西
当你运行cordov-hcp build 的时候 她里面的东西就会自动更新成这样
{
"autogenerated": true,
"release": "2017.07.08-16.34.13"
}
release是我们生成的时间,除了这两个,还有其他的需要配置的。
content_url:服务器地址 我们在config.xml配置的config-file 是这个http://192.168.1.203:8121/chcp.json,那么这里我们就是这样的http://192.168.1.203:8121。
min_native_interface:版本设置。在config.xml我们设置的native-interface version=5 那么我们生成的就会是 "min_native_interface":5.
update:可以设置的值有start:启动应用程序时安装更新;resume:从后台状态恢复应用程序时安装更新;
now:一旦下载就安装更新;
现在我们将chcp.json 文件修改成这样

{
"autogenerated": true,
"release": "2017.07.08-16.56.31",
"name": "hea",
"content_url": "http://192.168.1.203:8121",
"update": "start",
"min_native_interface": 1
}

4.添加安卓平台
cordova platform add android
运行在真机上
cordova run android
5.测试是否成功
我们修改项目的内容
然后 ionic serve 编译,跑在浏览器上我们的页面内容确实改变了。我们再运行cordova-hcp bulid,根据第三点配置,配置好chcp.json文件。

{
"autogenerated": true,
"release": "2017.07.08-17.22.34",
"name": "hea",
"content_url": "http://192.168.1.203:8121",
"update": "start",
"min_native_interface": 1
}

刚才不是 cordova run android 在真机上了嘛,现在我们退出应用程序,再打开应用程序可以发现内容已经改变了。
原本项目内容: 退出应用再打开时候内容:
出处 https://www.cnblogs.com/huangenai/p/7137475.html
转载《ionic 热更新 cordova-hot-code-push》的更多相关文章
- 转载《Android LayoutInflater详解》
在实际开发中LayoutInflater这个类还是非常有用的,它的作用类似于findViewById().不同点是LayoutInflater是用来找res/layout/下的xml布局文件,并且实例 ...
- Android LayoutInflater详解
在实际开发中LayoutInflater这个类还是非常有用的,它的作用类似于findViewById().不同点是LayoutInflater是用来找res/layout/下的xml布局文件,并且 ...
- Android LayoutInflater详解(转)
在实际开发中LayoutInflater这个类还是非常有用的,它的作用类似于findViewById().不同点是LayoutInflater是用来找res/layout/下的xml布局文件,并且实例 ...
- Android LayoutInflater详解 (转)
在实际开发中LayoutInflater这个类还是非常有用的,它的作用类似于findViewById().不同点是LayoutInflater是用来找res/layout/下的xml布局文件,并且实例 ...
- Android——LayoutInflater详解
在实际工作中,事先写好的布局文件往往不能满足我们的需求,有时会根据情况在代码中自定义控件,这就需要用到LayoutInflater. LayoutInflater在Android中是"扩展& ...
- <转> Android LayoutInflater详解
在实际开发中LayoutInflater这个类还是非常有用的,它的作用类似于findViewById().不同点是LayoutInflater是用来找res/layout/下的xml布局文件,并且实例 ...
- [ 转载 ] Android设计模式详解
从Android再来认识23种设计模式 ReadyShow 关注 0.2 2018.01.06 23:18* 字数 3855 阅读 2584评论 0喜欢 20 概况来看本文章的内容 创建型:5个 单 ...
- Android Notification 详解(一)——基本操作
Android Notification 详解(一)--基本操作 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/Notification 文中如有纰 ...
- Android Notification 详解——基本操作
Android Notification 详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 前几天项目中有用到 Android 通知相关的内容,索性把 Android Notificatio ...
- Android ActionBar详解
Android ActionBar详解 分类: Android2014-04-30 15:23 1094人阅读 评论(0) 收藏 举报 androidActionBar 目录(?)[+] 第4 ...
随机推荐
- 深入浅出的webpack构建工具---PostCss(五)
一:PostCss是什么? PostCss是一个样式处理工具,它通过自定义的插件和工具生态体系来重新定义css.它鼓励开发者使用规范的css原生语法编写代码,然后配置编译器转换需要兼容的浏览器版本, ...
- MySQL 基础二 创建表格
1.界面创建 2.SQL创建 教程地址:http://blog.csdn.net/brucexia/article/details/53738596 提供学习视频下载 链接:http://pan.ba ...
- 【Codeforces 204E】Little Elephant and Strings
Codeforces 204 E 题意:给\(n\)个串,求对于每一个串在至少\(k\)个串中出现的它的子串\(S_{l..r}\)有多少个. 思路:后缀自动机上\(dp\)... 我们首先构造出这\ ...
- python:利用smtplib模块发送邮件
自动化测试中,测试报告一般都需要发送给相关的人员,比较有效的一个方法是每次执行完测试用例后,将测试报告(HTML.截图.附件)通过邮件方式发送. 参考代码:send_mail.py 一.python对 ...
- 微软官方的Excel android 移动版的折腾
微软官方的Excel android 移动版,有重大bug.害我折腾了一天多时间.最终确认是Excel自身的问题. 现象描述:手机上新建或是保存excel后.放到电脑上,不能打开.提示”Excel在B ...
- ajax获取的数据如何渲染到dom元素上
1.常见的字符串拼接 (对于动态创建的元素添加js时,使用事件委托,利用事件冒泡的原理,把事件添加到父级元素上,触发执行效果) $("ul").on('click','li',fu ...
- Luogu P4137 Rmq Problem / mex
区间mex问题,可以使用经典的记录上一次位置之后再上主席树解决. 不过主席树好像不是很好写哈,那我们写莫队吧 考虑每一次维护什么东西,首先记一个答案,同时开一个数组记录一下每一个数出现的次数. 然后些 ...
- Luogu P1439 【模板】最长公共子序列
又是模板题呵,但这次的难度有点增加. 先看题目第一个想到DP的经典算法,要O(n^2),然后想其它的算法. 其实我们衢州市一次联考有一题很像这题,不过还要难一点. 思想是离散化+最长不下降子序列(在这 ...
- bitcoin 源码解析 - 交易 Transaction(二) - 原理篇
这篇文章我断断续续写了呃···· 应该快三个星期了? 所以前后的风格可能差别相当大.真是十分的怠惰啊··· 最近实在是不够努力.用python重写bitcoin的项目也卡在网络编程部分(这方面真是我的 ...
- Express4.x API (三):Response (译)
Express4.x API 译文 系列文章 Express4.x API (一):application (译) -- 完成 Express4.x API (二):request (译) -- 完成 ...