cordova-hot-code-push ,Cordova热代码推送插件提供了在应用程序中执行基于Web的内容的自动更新的功能。使用此插件可以更新存储在项目的www文件夹中的所有内容。

cordova-hot-code-push 插件的github url :https://github.com/nordnet/cordova-hot-code-push

更新流程

用户打开应用程序,Plugin get被初始化,并在后台线程中启动更新加载程序。更新加载器config-fileconfig.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" />
       <native-interface version="1" />
</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》的更多相关文章

  1. 转载《Android LayoutInflater详解》

    在实际开发中LayoutInflater这个类还是非常有用的,它的作用类似于findViewById().不同点是LayoutInflater是用来找res/layout/下的xml布局文件,并且实例 ...

  2. Android LayoutInflater详解

      在实际开发中LayoutInflater这个类还是非常有用的,它的作用类似于findViewById().不同点是LayoutInflater是用来找res/layout/下的xml布局文件,并且 ...

  3. Android LayoutInflater详解(转)

    在实际开发中LayoutInflater这个类还是非常有用的,它的作用类似于findViewById().不同点是LayoutInflater是用来找res/layout/下的xml布局文件,并且实例 ...

  4. Android LayoutInflater详解 (转)

    在实际开发中LayoutInflater这个类还是非常有用的,它的作用类似于findViewById().不同点是LayoutInflater是用来找res/layout/下的xml布局文件,并且实例 ...

  5. Android——LayoutInflater详解

    在实际工作中,事先写好的布局文件往往不能满足我们的需求,有时会根据情况在代码中自定义控件,这就需要用到LayoutInflater. LayoutInflater在Android中是"扩展& ...

  6. <转> Android LayoutInflater详解

    在实际开发中LayoutInflater这个类还是非常有用的,它的作用类似于findViewById().不同点是LayoutInflater是用来找res/layout/下的xml布局文件,并且实例 ...

  7. [ 转载 ] Android设计模式详解

    从Android再来认识23种设计模式 ReadyShow 关注  0.2 2018.01.06 23:18* 字数 3855 阅读 2584评论 0喜欢 20 概况来看本文章的内容 创建型:5个 单 ...

  8. Android Notification 详解(一)——基本操作

    Android Notification 详解(一)--基本操作 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/Notification 文中如有纰 ...

  9. Android Notification 详解——基本操作

    Android Notification 详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 前几天项目中有用到 Android 通知相关的内容,索性把 Android Notificatio ...

  10. Android ActionBar详解

    Android ActionBar详解 分类: Android2014-04-30 15:23 1094人阅读 评论(0) 收藏 举报 androidActionBar   目录(?)[+]   第4 ...

随机推荐

  1. WIN10+ VS2013 配置Opencv2413 64位

    VS2013 配置Opencv2413  64位 系统变量 Path:  F:\2biancheng_tool\Opencv2413\opencv\build\x64\vc12\bin 用户变量:添加 ...

  2. GitLab CI with docker and dind "mount: permission denied (are you root?)"

    今天配置gitlab-runner时候出现以上错误,在官网中找到答案 https://gitlab.com/gitlab-org/gitlab-runner/issues/1544

  3. 让sublime text3支持Vue语法高亮显示

    文章转自 http://www.cnblogs.com/kongxianghai/p/6732429.html 1.准备语法高亮插件vue-syntax-highlight. 下载地址: https: ...

  4. 5、数组&字符串&结构体&共用体&枚举

    程序中内存从哪里来 三种内存来源:栈(stack).堆(heap).数据区(.date): 栈(stack) 运行自动分配.自动回收,不需要程序员手工干预: 栈内存可以反复使用: 栈反复使用后,程序不 ...

  5. BZOJ1758 WC2010 重建计划 二分答案、点分治、单调队列

    传送门 看到平均数最大,自然地想到二分答案.那么我们的$check$函数就是要求:是否存在一条长度在$[L,U]$的路径,满足其权值和$\geq 0$. 看到长度在$[L,U]$,自然地想到点分治求解 ...

  6. spring boot 跨域请求

    场景 网站localhost:56338要访问网站localhost:3001的服务 在网站localhost:3001中增加CORS相关Java Config @Configuration @Ord ...

  7. Java 面试题 队列

    Queue: 基本上,一个队列就是一个先入先出(FIFO)的数据结构 Queue接口与List.Set同一级别,都是继承了Collection接口.LinkedList实现了Deque接 口.   Q ...

  8. Codeforces 718C solution

    C. Sasha and Array   time limit per test :  5 seconds memory limit per test :  256 megabytes Descrip ...

  9. Luogu P2568 GCD

    我们首先发现这样肯定是做不了的,所以我们枚举为\(gcd(x,y)=d\)的\(d\) 然后考虑以下的性质: \(gcd(x,y)=1 \Leftrightarrow gcd(px,py)=p(p为素 ...

  10. 【SDOI2017】数字表格

    题面 题解 这道题目还有一种比较有意思的解法. 定义一种运算\((\mathbf f\oplus\mathbf g)(x) = \prod\limits_{d\mid x}\mathbf f(d)^{ ...