#健康快乐工作#每一天都是新的一天

Cordova+Vue实现Android APP开发(四)-- 热更新详细教程

一、前言

Cordova+Vue实现Android APP开发(四)-- 热更新详细教程


二、安装Cordova热更新插件和热更新工具

1、安装Cordova热更新插件

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

2、安装Cordova热更新工具

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

上面热更新插件和热更新工具都安装完毕了。


三、具体实现

1、cordova热更新配置文件

在根目录中的config.xml,加入这个配置项

    <chcp>
        <auto-download enabled="true" />
        <auto-install enabled="true" />
        <native-interface version="1" />
        <config-file url="http://chat.chengxinsong.cn/hotUpdate/chcp.json" />
    </chcp>


这个url是热更新配置文件,必须能够被http访问到,否则无法更新。自己在nginx上配置了一下访问到json


2、生成热更新相关配置文件

cordova-hcp init

最重要的是上面我提到的两个update和content_url,如果还没有准备好相应的服务器路径什么的,可以随便先写一个(后边可以直接在cordova-hcp.json文件中修改设置),回车就会生成了cordova-hcp.json,存放在Cordova根目录下!


其中update的值:

# update可选值
start : app启动时安装更新. 默认值.
resume : app从后台切换过来的时候安装更新.
now : web内容下载完毕即安装更新.

注意:content_url,是非常重要的配置项,这是Cordova更新程序的在服务器上的存放目录,必须保证这个目录能够以http方式被访问,而且一定保证里面的chcp.json也能够以http方式访问。


3、热更新工具编译当前代码

cordova-hcp build

执行这个命令后,会很快编译完毕,如果程序不大的话,随后你会在www目录中发现两个文件:chcp.json和chcp.manifest,这两个文件,是这个热更新帮助工具自动生成的,不要手动去修改,否则如果修改错误了,热更新会失败。


实质是将根目录下的cordova-hcp.json的文件复制到www文件夹下,重命名为chcp.json,删除之前的同名文件。


4、启动本地服务

cordova-hcp server


项目\www 目录下成功chcp.json 和chcp.manifest 文件,chcp.json 文件如下,

release 是文件更新时间,移动端会根据这个时间进行比较

"content_url": "https://c94aeec5.ngrok.io", 如果有更新则到服务端该地址下载www 文件夹的所有文件

"update": "now" now 更新类型,立即更新

www文件下的chcp.json文件生成

{
  "name": "happyChatApp",
  "ios_identifier": "",
  "android_identifier": "io.cordova.happychat",
  "update": "now",
  "content_url": "https://88a2ad8f.ngrok.io",
  "release": "2019.04.20-21.46.48"
}

重要地方:这时候,重新再开一个命令行。执行

cordova run android

这时候真机上,运行了加上了热更新的插件的app。

注意:其实这时候是热更新正在的第一步。其实这个时候运行的时候,因为加了热更新代码,这时候编译的时候会根据你配置的`content_url`的地址去取最新的静态资源,所以第一次运行带有热更新插件的cordova代码,这时候需要本地服务,去取的是这个本地服务的随机服务地址https://01ec7da3.ngrok.io下的www的静态资源。



5、服务端配置

每次修改完代码文件后,先执行cordova-hcp build 然后将www目录中的所有文件 复制 到服务器上对应的目录中(本文服务器根目录下/hotUpdate目录下)

6、测试热更新

(1)修改根目录下的cordova-hcp.json文件中的content_url的值,指向自己的服务器,确保服务器中的资源可以通过http访问到。

我的是将https://e7cc3b2d.ngrok.io改为http://chat.chengxinsong.cn/hotUpdate

(2)执行命令cordova-hcp build,让www下的chcp.json文件取得最新的值。

这时候的www下的chcp.json是最新的content_url,值为http://chat.chengxinsong.cn/hotUpdate

(3)这时候修改vue项目,重新打包vue项目。

(4)将www下的所有文件上传到服务器http://chat.chengxinsong.cn/hotUpdate下面。

(5)重新启动app,就可以看到更新之后的效果


6、准备编译app

cordova run android

报错,出现了

Could not resolve all files for configuration ':app:debugCompileClasspath'.
> Could not resolve com.fasterxml.jackson.core:jackson-core:2.4.4.
  Required by:
      project :app
   > Could not resolve com.fasterxml.jackson.core:jackson-core:2.4.4.


最后查找资料发现是:

安卓编译不通过,提示 jackson-databind2.4.4找不到,并给了一个链接,但那个连接能正常打开,改成

chcp.gradle 里 


把2.4.4修改成2.4.3

dependencies {
    compile 'com.fasterxml.jackson.core:jackson-core:2.4.3'
    compile 'com.fasterxml.jackson.core:jackson-databind:2.4.3'
    compile 'org.greenrobot:eventbus:3.0.0'
}


文章转载:原创
感谢你的阅读,本文由 sau交流学习社区 版权所有。
如若转载,请注明出处:sau交流学习社区-power by saucxs(程新松)(/page/693.html)
交流咨询
    官方QQ群
    群号663940201,欢迎加入!
    sau交流学习社区交流群

图文推荐

saucxs聊天机器人
saucxs
hi ,欢迎来到sau交流学习社区,欢迎与我聊天,问我问题哦!