cordova安装、配置、热更新笔记

  快速安装:https://blog.csdn.net/Metal1/article/details/53790360

 

  安装其他:https://segmentfault.com/a/1190000010462906

 

  • Cordava热更新

  热更新:https://www.cnblogs.com/changzz/p/10763986.html

 

以下为安装配置过程中的注意事项:

 cordova-hcp init命令执行时最后输入的参数一定要注意:

 

 

(路径一定要正确,否则下一布使用cordova-hcp build,发布生成的www/chcp.json文件中的content_url也会有问题,导致路径和真正的文件路径对不上,无法更新)

 

注意以下2个文件的配置:

  1. www/chcp.json中"content_url": "xxxxxxxxxxxxx"的配置
  2. config.xml文件中的配置“<config-file url="xxxxxxxxxxx" />”
  3. 保证:www\chcp.json中content_url的文件夹中的文件可以访问
  4. 保证:\config.xml中config-file url="chcp.json"可以访问
  5. 保证:服务器www中chcp.json文件中的release最终版本号和本地www中chcp.json中的release最终版本号一致

 

 

发布新文件实现热更新:

修改cordova项目的代码或者文件,然后重新执行cordova-hcp build。将WWW打包放到服务器上。

注意:有时候执行cordova-hcp build命令后生成新的chcp.json文件,会有延迟(打开这个文件看一下是否和命令窗口中生成的release版本一致)

一致后才可以上传最新www到服务器(所以一定要保证上传到服务器上WWW中的chcp.json中的"release": "2020.04.27-xx.xx.xx"版本号和本地的一致。)

 

有时候可能不能即时更新,需要在手机打开2次,或者清理掉,重新打开APP才行(其实已经更新完成,但由于是单页应用,在更新前页面已经加载,所以需要重新启动APP重新加载页面才能看到更新)

  • 完美解决Cordova不用重启即可看到更新内容

首先奖config.xml文件中两项改为false,不自动下载和更新,而是由用户自己选择是否更新

<chcp>
    <auto-download enabled="false" />
    <auto-install enabled="false" />
    <native-interface version="1" />
    <config-file url="http://erp.bogvip.com/App/UpdateFile/chcp.json" />
  </chcp>

 

在deviceready事件中检查更新并提示用户是否更新

document.addEventListener('deviceready', onDeviceReady.bind(this), false);

 

以下为检查更新和更新代码,更新完成后网页会自动重新加载,所以自动重新加载后我们就可以看到更新的内容了!

        let chcp = window.chcp;
        // 检测更新
        chcp.fetchUpdate((error, data) => {

            // 表示没有更新版本,或者其他错误,详情的信息参考上面的chcp error链接
            if (error) {
                console.log('--fetchUpdate error--', error.code, error.description);
                return;
            }

            // 这次更新的版本信息
            console.log('--fetchUpdate--', data, data.config);
            // 检测是否是否可以进行安装了,双重判断吧,有时候会出现有更新版本但是暂时无法安装的情况(也可以去掉这一层)
            chcp.isUpdateAvailableForInstallation((error, data) => {

                if (error) {
                    console.log('No update was loaded => nothing to install');
                } else {
                    // 询问用户是否更新
                    if (window.confirm('检测到新版本,是否更新')) {
                        // 更新中
                        chcp.installUpdate((error) => {
                            if (error) {
                                // 更新失败
                                console.log('Failed to install the update with error code: ' + error.code);
                                console.log(error.description);
                            } else {
                                // 更新成功
                                console.log('Update installed!');
                            }
                        });
                    } else {
                        window.alert('您已拒绝更新');
                    }

                    // 对比版本号
                    console.log('Current content version: ' + data.currentVersion);
                    console.log('Ready to be installed:' + data.readyToInstallVersion);
                }

            });
        });

 

posted @ 2020-04-27 09:18  无聊的蚂蚁  阅读(640)  评论(0)    收藏  举报