zoukankan      html  css  js  c++  java
  • ionic cordova 热更新(引用自www.zyyapp.com/post/116.html)

    上篇文章cordova 把html打包成安卓应用 http://www.zyyapp.com/post/115.html

    cordova 热更新是一个大坑,我看了一天一夜才明白。网上的教程都没说到重点,他们只说了在本地调试,没说发布到自己的服务器,只有一篇说了但是也不详细。

    下边就是没有坑的教程,包你顺溜的走完流程。

    1. 打开命令提示符 进入工程目录,如果你只能在node.js command prompt 中运行cordova命令,那是因为你没有在系统变量path中添加node.js的路径。

       

    添加后即可在命令提示符中运行cordova命令。

    2.进入工程目录

     

    3.添加热更新插件

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

    或者

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

    (其他教程说要安装cordova-hot-code-push-local-dev-addon,其实不用这个,他只是帮助你调试用的。)

    安装热更新命令工具。它安装起来比较慢你需要等一下

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

    (如果你安装了taobao npm 可以输入   cnpm install -g cordova-hot-code-push-cli  ,taobao npm安装教程 http://www.zyyapp.com/post/114.html

    4.这里讲一下原理,不想看的话直接跳到第5步,这步没有操作!

    我们需要添加人更新检查文件的模板。这个其他教程都没有,我是在国外的官方教程上看到的。

    热更新的原理就是每次启动app都会把本地的chcp.json文件和服务上的做对比。

    chcp.json文件的内容如下:

     

    服务器上的和这个内容格式是一样的。

    每次app启动会检查本地的chcp.json文件中release的值是否和服务器中的一样,聪明的同学已经发行这个值是个时间。

    如果不一样,就开始更新,更新时,app会先把本地的www文件夹复制一份,命名为服务器的release值,然后对比chcp.manifest文件

    chcp.manifest文件的内容如下,他包含了www文件夹下所有的文件,而且都有hash值。更新时会 对比一下hash值,看看哪个文件变更了,就从content_url路径中下载相应的文件并复制到以服务器release的值命名的那个文件夹,这样比较省流量而且快。

     

    update 后边的参数定义 下载好后什么时间更新,如果是start表示下次启动后再更新。如果是now表示下载好后立即更新。两种方式各有优缺点,你可以自己体验一样。

    折中的是resume表示从后台切换过来的时候安装更新。

    更新后app就从以服务器release的值命名的那个文件夹加载资源文件。这样每次更新都会换一个资源文件夹,确保不会因为缓存导致看不到更新效果。

    5.安装完cordova-hot-code-push-plugin 后www文件夹内就已经有chcp.json 和chcp.manifest ,但是我们修改index.html等文件后要怎么更新chcp.json 和chcp.manifest,当然不用手动更改release值,也不用手动改hash。

    我们需要先生成一个chcp.json模板。

    在工程目录下输入cordova-hcp init

     

    需要输入名字,这里你填写app的名字即可,例如klkj (不要填中文哦)

     

    amazon s3不用填(这是让你填你的亚马逊服务器和热更新文件放的位置,因为你没有亚马逊服务所以不用填。)

    path s3 不用填

    只用填这3个,其他直接按回车。update method 填start表示应用下次启动的时候再更新,填now表示下载好更新文件后直接更新,填resume表示从后台切换过来的时候安装更新。

    enter full url 填写你放更新文件的服务器的路径。

     

    会在工程根目录生成cordova-hcp.json 文件

     

    内容如下

     

    ios_indentifier 和android_identifier 这两行可以删掉了,没什么用。

    6.输入 cordova-hcp build  会在www文件中重新生成chcp.json chcp.manifest 其中chcp.json的release值就是输入命令的时间。

    然后我们把整个www目录下的内容放到服务中,放在content_url这个路径中。我的是放在 www.zyyapp.com  这个网站的根目录下的www文件夹中。

    7.修改config.xml文件,config.xml位于工程的更目录中。

     

    添加

    <chcp>

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

    </chcp>

     

    8.打开Android studio 

    修改res-xml文件夹下的config.xml 

     

    9.把www下的文件复制到platformsandroidassetswww 文件,相同文件就覆盖。

     

     

    用android studio把应用安装到手机。

    更改下边文件夹中的index文件。

     

    在命令提示符中运行

    cordova-hcp build

    这时候chcp.json 和chcp.manifest会更新。为了省事,你直接把www文件夹下的内容覆盖到服务器中。

    你手机打开app,稍等一会,然后关了app重新打开。这时候应该就看到你更新的内容了。

    教程到此结束,如果不懂得可以在下边留言。

  • 相关阅读:
    二叉树的节点删除
    PHP开启错误日志详细说明
    jsonpath模块
    Gunicorn-配置详解
    Vmware创建虚拟机步骤说明,详细配置解释
    Python multiprocessing使用详解
    Python定时任务框架apscheduler
    Access-Control-Allow-Origin跨域解决及详细介绍
    web安全:x-content-type-options头设置
    sqlalchemy的基本操作大全
  • 原文地址:https://www.cnblogs.com/brantshi/p/6170154.html
Copyright © 2011-2022 走看看