ionic热更新

参考

http://blog.csdn.net/lovelyelfpop/article/details/50848524

安装

热更新插件

地址:https://github.com/nordnet/cordova-hot-code-push.git

注意:工程插件目录plugins下的三个json文件为可读写属性,否则安装将失败

Cordova Hot Code Push 命令行客户端

地址:https://github.com/nordnet/cordova-hot-code-push-cli

全局安装命令npm install -g cordova-hot-code-push-cli 已安装请忽略

项目中新建hotUpdate目录,用来生成服务器更新文件。

切换到hotUpdate目录,初始化命令:cordova-hcp init

 

Enter project name:项目名称

1-4全部回车

Ios app identifier:打开app stroe下载地址

Android app identifier :下载apk的地址

Update method:热更新方式(start、now、resume)

                                 start - app启动时安装更新. 默认值

                                 resume - app从后台切换过来的时候安装更新

                                 now - web内容下载完毕即安装更新

 

执行完后将产生cordova-hcp.json,打开文件修改

  "ios_identifier": "https://itunes.apple.com/cn/app/id123456789",

  "android_identifier": "http://10.7.0.88:8001/AppVersion/android.apk",

 

 

配置

config.xml

loadUrlTimeoutValue热更新连接超时毫秒,不填默认30秒

 

 <chcp>
  <config-file url="http://10.7.0.88:8001/HotUpdate/chcp.json"/>
  <auto-download enabled="true" />
  <auto-install enabled="true" />
  <native-interface version="18" />
 </chcp>


 config-file

定义了一个 URL,指定了需要从哪里加载app配置(application config,就是chcp.json)。url 属性中声明. 此项必须

auto-download

自动下载web内容更新,默认true是自动, 如果你想手动下载web内容更新,你可以使用 JavaScript 模块.

auto-install

自动安装. web内容更新. 默认true是自动, 如果你想手动安装web内容更新,你可以使用 JavaScript 模块

native-interface

所需最小的外壳app版本. 这是app的build版本号,是个整型数字, 不是应用商店中看到的形如"1.0.0"字符串,在 config.xml中,这样指定build版本号:

1.version - app字符串版本号, 也就是用户在商店中看到的版本

2.android-versionCode - 安卓的build版本号. 这个应该用于 min_native_interface

3.ios-CFBundleVersion - iOS的build版本号.这个应该用于 min_native_interface

重要: 因为cordova的一个奇葩现象, 生成的 .apk 的build版本号会被当成字符串补0, 导致了变成了形如 10, 12, 14,18 or 19 根据不同平台 (arm/x86/etc),后面的0、2、4、8、9不同. 为了绕过这个也给 iOS build版本号手动加成一样, 这样 min_native_interface (比如 18) 就可以对安卓和iOS都有效, 大致是这样:

<widget id="io.cordova.hellocordova"
      version="1.0.1"
      android-versionCode="1"
      ios-CFBundleVersion="18">

 

部署

部署服务器,网站目录直接指向www目录。

如果项目没有混淆,直接拷贝project/www到服务器即可,但项目有混淆情况,按以下步骤:

生成chcp.manifest,因为混淆后的文件md5不一样

1.vs生成项目,此步只是为了生成混淆文件而已,因为热更新需要的chcp.json与chcp.manifest文件还没有生成,所以此时的项目还不具备热更新功能

2.platforms\android\assets\www目录下的css、js、img、page、lib目录及index.html至(hotUpdate/www)。如下图:

3.运行编译命令:cordova-hcp build 将利用cordova-hcp.json模板在(buildHot\www)录生成chcp.json与chcp.manifest文件

 

注意:运行命令前先保证有platforms文件夹,否则会出现如下提示:

 

4.拷贝chcp.json与chcp.manifest回项目www目录中

5.vs再生成一次项目,此步的生成的apk是具备热更新功能的

6.(hotUpdate)目录下www所有文件拷贝至热更新服务器

 

服务器增加json的MIME类型

 

如果下次只热更新js,html之内的,重复部署步骤1、2、3、6

 

如果APP需要引导用户跳转到商店下载,那么只需要chcp.json文件设置"min_native_interface"的值与新发布apk versionCode 必须保持一致

 

本地开发

热更新插件的原因,导致开发时,改了代码运行起来看不到效果,三种解决方式

1、删除APP,config.xml <auto-download enabled="false" /> 改false 不自动下载服务器文件,然后再编译运行

2、不删除APP,config.xml <auto-download enabled="false" /> 改false 不自动下载服务器文件, android-versionCode +1 然后再编译运行

3、安装插件https://github.com/nordnet/cordova-hot-code-push-local-dev-addon

   参考文章:http://blog.csdn.net/lovelyelfpop/article/details/50848524#local-development-add-on

 

欢迎关注公众号,每天为您推送“人生感悟、说话技巧、职场规则、职场成长”

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

易家兴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值