例子源码参见我的github:zhangzhaojun/chcp-manual-demo

使用cordova-hot-code-push插件的方法如下:

1、如下命令创建一个项目:

$ ionic start myNewProject blank 

2、进入项目目录并添加平台支持:

$ cd myNewProject
$ ionic cordova platform add android@6.1.2

注意:cordova platform add android前面必须加上ionic,否则出现如下错误提示:

Error: Current working directory is not a Cordova-based project.

3、如下命令添加cordova-hot-code-push插件:

$ ionic cordova plugin add cordova-hot-code-push-plugin

4、执行以下命令初始化插件:

$ cordova-hcp init

上图中的url输错了,应是http://123.207.88.149/www

5、打开config.xml,添加如下代码:

<chcp>
<config-file url="http://123.207.88.149/www/chcp.json"/>
</chcp>

6、执行以下命令生成APK:

$ ionic cordova build android --prod --release

7、执行以下命令生成chcp.json和chcp.manifest文件,生成的文件位于www目录下:

$cordova-hcp build 

说明:chcp.json和chcp.manifest文件在打包时会打包进APK。目前两个文件的内容如下:

chcp.json的内容如下,它列出了当前版本发布的时间("release": "2017.12.18-19.29.19"):

{
"name": "chcp-manual-demo",
"ios_identifier": "",
"android_identifier": "",
"update": "resume",
"content_url": "http://123.207.88.149/www",
"release": "2017.12.18-19.29.19"
}

chcp.manifest的内容如下,它列出了www目录下的所有文件及每个文件此刻的hash值:

[
{"file": "assets/fonts/ionicons.eot","hash": "bdf1d30681cf87986c385eea78e8de9a"
},
{"file": "assets/fonts/ionicons.scss","hash": "c1fdfabf9cbd412b444f064d27641f10"
},
{"file": "assets/fonts/ionicons.svg","hash": "d9496a234c81179afbca6bf5959cc30a"
},
...
]

8、执行如下命令,重新打包成apk文件,这时候的apk就包括了上面的chcp.json和chcp.manifest文件了,然后将apk签名并安装到手机:

$ ionic cordova build android --prod --release

9、对app的源文件进行修改,然后再执行如下命令:

$ ionic cordova build android --prod --release
$cordova-hcp build
$ ionic cordova build android --prod --release

然后将此时www目录拷贝到http://123.207.88.149/下。然后对nginx进行配置,我用的是腾讯的云服务器,进入云服务器的控制台,进入/etc/nginx/sites-enabled目录后,$ sudo vim default进行配置:

ubuntu@VM-0-14-ubuntu:/etc/nginx/sites-enabled$ sudo vim default

图示如下:

上图中的

location /www/ {try_files $uri =404;
}

就是我们添加的内容。

至此,当我们的app从后台恢复到前台运行时就会自动检测并下载安装更新了。

10、但是当我们给app增加了新的插件的话,我们就只能通过提示让用户手动到相应地址下载更新了。方法如下:

10.1 在config.xml添加<native-interface version="1" />,这里1为当前版本号。如下所示:

<chcp>
<config-file url="http://123.207.88.149/www/chcp.json" />
<native-interface version="1" />
</chcp>

10.2 在cordova-hcp.json中添加"min_native_interface": 1,如下所示:

{
"name": "chcp-manual-demo",
"ios_identifier": "",
"android_identifier": "http://www.zhikeji.top/xxx.zip",
"update": "resume",
"content_url": "http://123.207.88.149/www",
"min_native_interface": 1
}

10.3 在app.component.ts中增加支持外壳更新的功能,代码详见我的github仓库。

接下来项目根目录下依次执行:

$ ionic cordova build android --prod --release
$ cordova-hcp build
$ ionic cordova build android --prod --release

然后把生成的apk签名及安装到手机。

之后把www文件夹上传到http://123.207.88.149/即可。

10.3 每当我们给app增加了插件后,我们只需要将cordova-hcp.json中"min_native_interface": 1的1增加为2,将config.xml中的<native-interface version="1" />相应改为<native-interface version="2" />即可,然后执行:

$ ionic cordova build android --prod --release
$ cordova-hcp build
$ ionic cordova build android --prod --release

之后把www文件夹上传到http://123.207.88.149/即可实现外壳更新提示。

热更新原理:手机上的app根据自身config.xml中<config-file url="http://123.207.88.149/chcp.json"/>下载http://123.207.88.149/chcp.json文件并与app自身的chcp.json中"release": "2017.12.18-19.29.19"对比,如果时间比自己的新,则根据app自身中的chcp.json中的"content_url": "http://123.207.88.149/www"中的content_url的值到http://123.207.88.149/www下载chcp.manifest并与自身chcp.manifest对比,对于hash值不同的文件,app将从http://123.207.88.149/www下载并更新。当服务器上的chcp.json中的"min_native_interface"的值大于手机app中config.xml中的<native-interface version=的值时,代表需要外壳更新,这时就会提示用户手动前往下载安装更新。

注意:每次版本的更新,生成的apk文件名中最后包含相应的版本号数字,以便区分。另config.xml中<widget id="http://io.zzj.xxx" version="2.3.3"这的版本号也同时修改。

cordova 更改app版本_ionic项目中使用cordova-hot-code-push插件相关推荐

  1. cordova 更改app版本_Cordova打包Android应用流程(MAC)

    扩展阅读 基于Cordova批量打场景包(MAC) APP包名称命名规则 1. 安装cordova打包应用 `brew install cordova` 2. 创建cordova项目 执行命令 `cr ...

  2. cordova 更改app版本_【ios马甲包cps联运】App上架难 马甲包不知道该怎么做?

    专业app代上架!解决全网IOS上包难诸多问题 ,提供多类别马甲包功能包定制服务!(直播.财务.社交.生活.游戏.电商)另外提供app加速审核及好评优化服务.长期出售白包功能包! 总的来说,App S ...

  3. 扫描二维码下载APP文件在项目中的实现

    实现思路 现在的很多项目都拥有web网页端和APP端,一般都是同时使用,当使用APP时则需要下载,常用的方式则是扫描二维码下载.现在来分享一下自己在工作中具体是如何实现扫描二维码进行下载的. 生成二维 ...

  4. [Phonegap+Sencha Touch] 移动开发77 Cordova Hot Code Push插件实现自己主动更新App的Web内容...

    原文地址:http://blog.csdn.net/lovelyelfpop/article/details/50848524 插件地址:https://github.com/nordnet/cord ...

  5. vue项目中的小知识--快捷键-vue插件版本号--vscode插件等

    vue项目中的小知识--快捷键等 0 版本号 1 代码片段的获取: 2 vscode中一些常用扩展 3 进入另一个文件夹,返回上一级 4查看Vue的版本和Vue/CLI的版本 5 --save-dev ...

  6. Tinymce富文本编辑器在vue项目中的使用;引入第三方插件和上传视频、图片等

    先放张效果图 第一步:安装依赖 npm install tinymce@5.0.12 第二步:在项目中的public文件夹中新建tinymce文件夹(因为我的项目是脚手架创建的,所以公共文件夹是pub ...

  7. 在angular项目中集成海康视频web插件 V1.4.1

    在近期的angular项目中,需要跟海康iSecure Center平台对接,实现监控点视频的实时和录像播放功能. 对接过程并不顺畅. 本来已经通过视频流转http-flv协议,利用flvjs实现了基 ...

  8. vue-tour快速入门:VUE项目中如何使用vue-tour新手引导指引插件?怎样使用?包含具体实例

    官网: Vue Tour | A lightweight and customizable tour plugin for use with Vue.jshttps://pulsardev.githu ...

  9. vue项目中字体自适应屏幕(使用px2rem插件)

    1.为什么使用rem做适配? 答:当你使用px做单位的时候,在不通分辨率的手机型号,他显示的大小就是设定的多少px,当手机尺寸大时,那么元素就会显得很小,当手机分辨率过小时,元素就会显得很大,因为我们 ...

最新文章

  1. 程序员面试被问:公司遇难你愿意留下?网友:辉煌时升职吗
  2. 【Paper】31_[18]On a Dynamic Extension of the Theory of Graphs
  3. python手机代码识别数字_python实现kNN算法识别手写体数字的示例代码
  4. PS图片后期之超简易造光调色方法
  5. 【AI视野·今日CV 计算机视觉论文速览 第206期】
  6. Python凭啥这么受欢迎?
  7. 面向对象编程(OOP)和函数式编程(FP)的思考
  8. 怎么修改mysql主键(id)的值为自增
  9. 【读书笔记】浪潮之巅——公司史篇
  10. GridView样式
  11. 嵌入式软件设计中的哲学思想
  12. 考勤打卡不如自我约束
  13. 注塑模具设计需要注意哪些要点?
  14. 关于微博的发表框计数规则及jq实现
  15. 如何正确使用 Mac 电脑的“恢复模式”?
  16. 自定义域名:为自己的CSDN博客添加自定义域名吧!
  17. OpenVINO 环境配置
  18. 前缀表达式与后缀表达式求法(栈的应用)
  19. 调查:十大房价上涨潜力最大城市
  20. 图书管理系统——图书的查询功能/图书的添加功能

热门文章

  1. 像像接入云信,连接真人连接真爱
  2. Java期末复习——ch02基本类型(进制转换,数据类型转换,汉字编码)
  3. Toping Kagglers:Bestfitting,目前世界排名第一
  4. java 有什么方法可以动态或循环的生成对象名
  5. 关于WEB ServiceWCFWebApi实现身份验证之WebApi篇
  6. [2897]F SDUTOJ
  7. 兼容IE和火狐、crome的返回XML文件内容
  8. [转载] C#面向对象设计模式纵横谈——10. Decorator装饰模式
  9. SqlConnection就一定要关闭吗?
  10. html egg mac os 10.7,HTML Egg