上一篇,我们介绍了在本地开发环境下的ionic项目热更新测试,

本文,我们将详细说明如何在去掉cordova-hot-code-push-local-dev-addon插件的情况下,实现热更新。

使用步骤:

1.安装CLI:npm install -g cordova-hot-code-push-cli

这里,需要详细描述一下CLI 提供的各种命令,后面我们将会用到。使用办法:cordova-hcp <command>,<command>包括:

  (1)init:为项目初始化参数,创建默认的cordova-hcp.json文件。

  (2)build:编译项目代码,在www文件夹下生成chcp.json和chcp.manifest文件,为部署做准备。

  (3)server:在本地启一个服务器,用于本地的开发和测试,这在前一篇中有过描述。

  (4)login:创建用于在远程服务器上部署项目文件的登录凭据。

  (5)deploy:上传项目文件到远程服务器。

注意:上述命令必须运行在ionic项目的根目录。

2.安装插件:ionic cordova plugin add cordova-hot-code-push-plugin

3.cordova-hcp init,为项目生成配置模板,会在根目录下创建cordova-hcp.json文件

部分配置项可以直接回车跳过,完成后,会在项目的根目录下创建cordova-hcp.json文件:

我们可以打开文件看一下,其格式如下:

说明:这一步如果大家不理解,也可以先跳过,后面手动创建cordova-hcp.json文件也是可以的。

关于init命令,详细可参考:https://github.com/nordnet/cordova-hot-code-push-cli#init-command

4.cordova-hcp build,编译项目文件,并在www文件夹下生成chcp.json和chcp.manifest文件

chcp.json:包含应用发布的相关信息,比如www内容的远程服务器地址content_url、www文件的版本号release等等。

chcp.manifest:包含web项目文件的相关信息,它们的相对路径和hash值。

热更新插件通过比对本地该文件下的对应hash值与服务器上的文件的hash值判断哪些文件需要更新、哪些文件需要新增等。

5.由于这几个步骤中都涉及远程服务器的配置,这里我就在自己的电脑上搭建了一个测试站点,模拟远程服务器的作用。

我使用的是IIS,大家用其他的web server也可以。物理路径大家自己选择,这里站点对应的目录是空的,还没有部署www的内容。

在IIS管理器中是这个样子的:

这样我用于测试的远程服务器地址就是:http://10.200.223.160:8022

与此同时,在此站点的根目录下我们创建一个空的www文件夹,用于后面部署ionic www里面的内容。这一步内容先不管。完成后启动站点。

6.将上面步骤3和步骤4中涉及远程服务器地址的地方,替换为我们自己搭建的服务器地址,比如:

将http://myserver.com/hotcodepush/www 替换为http://10.200.223.160:8022/www/

回到我们的ionic项目,在config.xml文件中,我们需要添加以下内容:

代码部分的修改完成以后,我们直接打包APP即可,用于后面的测试。

ionic cordova build android --prod 。生成安装包并安装到手机,不详述。

7.接下来就是涉及远程服务器部署的事情了。假定此时我们对代码进行了更新,并将最新的编译结果提交到远程服务器,以供客户端下载。

注意我修改了一下home.html:

接下来的流程就是,不要走错:

(1)执行ionic build --prod,以将我们修改的代码,编译生成最新的www。注意--prod参数,以减小www文件内容的大小;

(2)执行cordova-hcp build,以生成最新的chcp.json和chcp.manifest文件;

(3)完成后将www文件夹里面的内容,拷贝到我们远程服务器的www目录下即可。GitHub上介绍的是通过cordova-hcp deploy来进行部署,

  该命令暂时只支持亚马逊的服务器,所以我们可以无视此命令,手动部署即可。

8.远程服务器上的更新部署完毕之后,我们重启我们的APP,会自动去服务器上下载更新内容,并且可以看到修改的内容生效。

关于何时加载更新内容,就是前面update参数的设置,包括start、resume、now三种。

实现的效果就是:

      

这样,关于产品发布状态(非本地开发环境、不依赖于开发插件)下的Ionic项目热更新测试就完成了。

注意事项:

1.测试过程中,搭建的站点不识别.json格式,请为站点添加MIME类型;

完成后最好用手机浏览器测试一下,以确保配置文件可正常访问:

2.代码产生变动后,务必先用ionic build --prod编译一下,再通过cordova-hcp build生成最新的配置文件。

两个步骤不能漏,也不能反,完成后再将最新生成的www目录拷贝到远程服务器部署。

3.当上述步骤都没有问题,APP却不能实现更新,或者更新出现异常,多半是远程服务器上的站点出现了问题,

所以先用浏览器测试一下远程服务器,是否可正常访问。通常只要升级目录没问题,热更新就可以正常使用。

4.IIS站点部署的内容频繁替换的时候,有的时候更新内容不能立即生效,因为站点会缓存;测试的时候想让更新立即生效,可以重启IIS站点。

转载于:https://www.cnblogs.com/tomkart/p/7763573.html

Ionic APP 热更新 之 产品发布状态下的热更新搭建,去local-dev-addon插件相关推荐

  1. visual studio无法更新_微软发布 VS Code Python 四月更新

    微软发布了 4 月的 Visual Studio Code Python 扩展更新,该版本包括 Jypyter Notebooks 中的 ipywidgets 支持以及 Django 和 Flask ...

  2. VS调试状态下断点总是进不去,不能进断点调试解决办法

    在前两天总是遇到在调试.net的项目的时候,明明设置了断点但是总是执行进不去断掉调试 查找原因之后的是项目属性中的优化代码打上对勾了,去掉对勾问题就解决了. 具体操作如下图:

  3. iphone更新运营商服务器,iphone运营商设置更新是什么意思?更新方法是什么

    苹果 手机近几年来一直都是手机行业内的领导品牌,它不断的创新改进,从硬件到软件都进行了全面的改善.苹果如今是广大消费者特别认可的一个品牌,使用的人群也比原来有了很大的增长,每个消费者都会遇到不一样的问 ...

  4. 产品周报第27期|会员新增拉黑用户权益;CSDN APP V5.1.0版本发布……

    hello,大家好,这里是「CSDN产品周报」第27期.本次更新主要涉及APP.问答及会员权益,欢迎大家详细了解和使用. 一.CSDN APP V5.1.0版本发布 1.首页导航支持自定义 首页增加用 ...

  5. 产品周报第30期|编辑器支持自定义写作模板;MarkDown编辑器接入质量分检测功能;CSDN APP V5.2.0版本发布

    hello,大家好,这里是「CSDN产品周报」第30期.本次更新主要涉及博客.首页和CSDN APP,欢迎大家详细了解和使用. 博客产品体验优化 一.编辑器新增自定义模板创建功能 每个人都有自己的写作 ...

  6. 【ionic App问题总结系列】ionic 如何更新app版本

    ionic 如何进行自动更新 ionic App更新有两种方式:第一种是普通的从远程下载apk,安装并覆盖旧版本.另外一种就是采用替换www文件夹的内容,实现应用内更新,而无需下载安装apk.  这篇 ...

  7. android app 自动更新,app升级项目,新增强制更新(可静默),支持热更新(wgt),可支持高版本安卓系统...

    pure-updater 一个可以用的自动更新方案 经测试可支持 Android 9.0 已支持热更新 已支持静默的强制更新 如果您觉得还可以的话那就点个五星吧!谢谢! 已测试 android 8.0 ...

  8. 华为回应出售手机业务传闻:假消息;微软将ChatGPT整合到更多工具中:不用写代码就能开发应用;苹果更新Mac产品线|极客头条

    「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧. 整理 | 梦依丹 出品 | CSDN(ID:CSDNnews ...

  9. ​华为回应出售手机业务传闻:假消息;微软将ChatGPT整合到更多工具中:不用写代码就能开发应用;苹果更新Mac产品线|极客头条...

    「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧. 整理 | 梦依丹 出品 | CSDN(ID:CSDNnews ...

最新文章

  1. 设计一条简单的等待工作队列之软件模型设计与实现(二)
  2. python中plot实现即时数据动态显示方法_python中plot实现即时数据动态显示方法
  3. DOS下操作注册表的部分命令
  4. python题库刷题训练软件_刷题 -- python计算器练习题
  5. 初识ES-IK分词器的拓展和停用词典
  6. Linux挂载命令mount详解
  7. apache php 脚本,PHP脚本不在Apache服务器上执行
  8. bind merge r 和join_R语言并行读取csv:地表最快csv合并方法
  9. 软件测试nodejs面试题,nodejs单元测试和性能测试
  10. 下载并遍历 names.txt 文件,输出长度最长的回文人名。
  11. oracle餐厅网络点餐系统_开餐厅,餐饮老板到底要怎么选餐饮管理系统?
  12. 清明小长假不无聊:分享一大波影视网站和APP,轻松看全网视频
  13. 如何将Excel保存为TXT格式文件
  14. kux格式怎么转换成mp3_优酷kux1080转码工具 1080p kux格式转换mp4|优酷kux格式转换成MP4格式...
  15. 一窥Memory测试算法及自我修复机制
  16. 【学术】写文章的框架
  17. Python编程语言好学吗? 零基础转行能学Python吗?
  18. Pat(Advanced Level)Practice--1054(The Dominant Color)
  19. 微信开发之使用java获取签名signature
  20. 数据分析编程检验——车流量统计(不能使用pandas和numpy)

热门文章

  1. spring学习--AOP五个通知
  2. android radiogroup 底部菜单,Android底部菜单栏(RadioGroup+Fragment)美化
  3. 《与爱因斯坦月球漫步——美国记忆力冠军教你记忆一切》读书摘抄[美]乔舒亚.福尔
  4. handler和thread之间如何传输数据_HTTP和TCP之间的关系
  5. 查询中接受的主体参数_【自动化/测开面试集锦系列】SQL查询
  6. mysql密码登陆过程_mysql单实例忘记密码如何登陆过程
  7. oracle存储过程和视图不存在,Oracle 创建存储过程 提示权限不足或者提示表和视图不存在问题...
  8. python调用可执行文件_如何从Python脚本调用可执行文件?
  9. oracle xp安装详细步骤
  10. parallelstudio license 位置_UAV位置测量仪器Apogee-D Dual GPS INS