文档章节

Cordova 热更新处理(一):调试历程

wwzzhh166
 wwzzhh166
发布于 2017/01/17 15:13
字数 1582
阅读 541
收藏 1
## 20170116 继续处理 热更新
    1、上午明白了几个关键思路和功能后,继续
        cordova-hcp init
            这个会初始化 www 目录下 chcp.json 主要信息
        config 中 local-development enabled="false"
            去掉本地调试(缺省是开着的)
        sudo cordova-hcp server
            这个用来本地测试
        sudo cordova-hcp build
            这个会重新生成 www 目录下的 chcp.json
        cordova build
            这个会重新生成 platforms ,主要chcp相关的是 assets/www 下的 chcp.json
    2、当前项目上午已经 cordova-hcp init 过,所以,直接 cordova-hcp build
    3、先别着急运行,如果直接 sudo cordova run android  ,会受到以下警告
        You're trying to install apk with a lower versionCode that is already installed.
        Either uninstall an app or increment the versionCode.
        *** 因为早上给 config.xml 加上了 versionCode,手机上的版本当时不带这个
        *** 怎么缺省的 versionCode 会大于我现在建立的这个呢?
    4、卸载手机的旧版本
    5、先 copy 目前的 www 到    "content_url": "http://192.168.1.103/hot20170113/www",
    6、sudo cordova run android ,观察 logcat 
        01-17 14:43:32.397: I/chromium(30190): [INFO:CONSOLE(80)] "actionId  555===chcp_nothingToUpdate", source: file:///data/user/0/io.cordova.hellocordova/files/cordova-hot-code-push-plugin/2017.01.17-14.42.35/www/plugins/cordova-hot-code-push-plugin/www/chcp.js (80)
        *** 因为手机运行版本和 copy 到 content_url 的内容完全一致,当然就是:chcp_nothingToUpdate (没有可以更新的内容)
    7、手工修改一下 index.html,并且 sudo cordova-hcp build,然后 copy www 到  content_url
    8、在手机退出 app ,再次运行并观察 logcat
        01-17 15:01:43.919: I/chromium(30190): [INFO:CONSOLE(63)] "{"action":"chcp_updateIsReadyToInstall","data":{"config":"{\n  \"name\": \"cdvDemo20161227\",\n  \"ios_identifier\": \"\",\n  \"android_identifier\": \"\",\n  \"update\": \"resume\",\n  \"content_url\": \"http://192.168.1.103/hot20170113/www\",\n  \"release\": \"2017.01.17-15.01.16\"\n}"}}", source: file:///data/user/0/io.cordova.hellocordova/files/cordova-hot-code-push-plugin/2017.01.17-14.42.35/www/plugins/cordova-hot-code-push-plugin/www/chcp.js (63)
            *** chcp_updateIsReadyToInstall 准备安装了
        01-17 15:01:43.920: I/chromium(30190): [INFO:CONSOLE(159)] "broadcastEventFromNative  6666 nativeMessage.action==", source: file:///data/user/0/io.cordova.hellocordova/files/cordova-hot-code-push-plugin/2017.01.17-14.42.35/www/plugins/cordova-hot-code-push-plugin/www/chcp.js (159)
            *** broadcastEventFromNative 收到了原声的广播
    9、退出 app ,再次进来
            哈哈哈哈!index.html 焕然一新了!
    10、下一步:在 ionic 项目实现热更新,。在 ios 模拟器 测试效果
            
## 20170116 继续处理 热更新
    1、sudo cordova-hcp server 会看到
      "content_url": "https://fd872c9f.ngrok.io",
      "config_url": "https://fd872c9f.ngrok.io/chcp.json"
    2、理解本地调试,不是指的我在本机设置一个网站,而是以上 content_url
        ** 以上测试通过后,就不要使用 本地模式了
         <local-development enabled="false"/>.
    3、官产 cordova build 日式
      CHCP Local Development Add-on:
          Local development mode for CHCP plugin is disabled. Doing nothing.
      CHCP plugin after prepare hook:
          config-file set to http://192.168.1.103/hot20170113/www/chcp.json
    4、观察 android/res/config.xml,没有 content-uri,所以 app 不知道在哪里下载更新
    5、理解 cordova-hcp init,需要输入 报名、版本之类,修改 config.xml ,加上 versionCode 等
        ** 缺省建立的项目 没有以下 versionCode,先加上
        android-versionCode="7"
        ios-CFBundleVersion="3"
    6、先到这里,下次继续  

## 20170116 继续处理 热更新
    1、换个 4.4 手机试试
        01-16 09:18:04.094: W/chromium(6919): [WARNING:proxy_service.cc(888)] PAC support disabled because there is no system implementation
    2、去掉             <auto-install enable="true">
        ** 不行!
    3、继续去掉 <auto-download enable="true"/>
        ** 不行!
    4、难道是因为 cordova-hcp.json?删除!
    5、删除程序,重新运行,也不行!
    6、彻底删除
                    <auto-download enable="true">
                    <auto-install enable="true">
      ** 这次可以了!刚才都是改成 false
    5、反向再回复
                   <auto-download enable="false"/>
                   <auto-install enable="false"/>
      ** 趋势不行,加上这 2 个选项就不对!
                            
## 20170114 继续处理 热更新
    1、修改 config.xml,增加以下节点
        <chcp>  
            <auto-download enable="true">
            <auto-install enable="true">
            <config-file url="http://192.168.1.103/hot20170113/chcp.json"/>  
        </chcp>
      Chcp.json包含了项目的版本信息,是否立即更新,服务器的更新地址
      Chcp.manifest包含了www目录下的文件和对应的hash码值
    2、新建立一个 cordova-hcp.json,在项目根目录,内容如下   
        {
          "update": "start",
          "content_url": "http://192.168.1.103/hot20170113/www"
        }
    3、重头来过,
        ** 检查 platforms 的 ios 下(项目名: HelloCodova 目录下)config.xml,确实生成了 chcp 节点
        ** 检查 platforms 的 android 下,res/xml 目录下 config.xml,确实生成了 chcp 节点
      <chcp>
        <auto-download enable="true"/>
        <auto-install enable="true"/>
        <config-file url="https://324f0022.ngrok.io/chcp.json"/>
        <local-development enabled="true"/>
      </chcp>
    4、运行 sudo cordova run android  
        靠!直接退出!难道我的 p9 不支持?        
    5、修改 index.html,后,
        sudo cordova-hcp build
        copy www 到 http://192.168.1.103/hot20170113/www
    先到这里,下次继续!
        
## 20170114 继续处理 热更新
    1、在本机建立测试黄静
        ** LAN 固定 ip /192.168.1.103
        ** 本机虚拟目录建立一个目录 hot20170113
        *** 在手机测试 http://192.168.1.103/hot20170113/
        ok!
    2、修改 config.xml
            <chcp>    
                <config-file url="http://192.168.1.103/hot20170113/chcp.json"/>  
            </chcp>
    3、重新 build , cordova-hcp build
        ** android/assets/www 下没有看到 chcp.json
        ** 重新build android , sudo cordova build android
        ** 这次有了 chcp.json,chcp.menifest
    4、copy www 目录下到我的虚拟目录去
    5、打开 android/assets/www 目录下的 chcp.menifest,记下一个 hash,用于修改后对比,以便确认是否在改变
        "file": "index.html",
        "hash": "44e249d8e1379d12a360efe37c4d43a8"
    6、在 index.html 随意修改点什么 ,然后再 build
    7、再打开 android/assets/www 目录下的 chcp.menifest,没有发现变化?
    8、发现有个错误提示
        Can't find .chcpenv config file with local server preferences. Did you run "cordova-hcp server"?
    9、那就先 cordova-hcp server
     Checking:  /Users/dhbm/Desktop/ion20160925/cdvDemo20161227/www
     local_url http://localhost:31284
     Build 2017.01.14-10.23.10 created in /Users/dhbm/Desktop/ion20160925/cdvDemo20161227/www
     cordova-hcp local server available at: http://localhost:31284
     cordova-hcp public server available at: https://324f0022.ngrok.io
    10、再来 sudo cordova build,之后查看 android/assets/www 目录下的 chcp.menifest
       "file": "index.html",
       "hash": "c7c97e6012b265d70d9b3835e237a692"
       *** 哈哈哈哈,果然改变了!
    11、淡然,以上这一轮仅仅是确认变化,没有发布 apk 到手机,需要重新来过
       
       hbmdeMacBook-Pro:cdvDemo20161227 dhbm$ cordova-hcp server
       Running server
       Checking:  /Users/dhbm/Desktop/ion20160925/cdvDemo20161227/www
       local_url http://localhost:31284
       Build 2017.01.16-09.57.10 created in /Users/dhbm/Desktop/ion20160925/cdvDemo20161227/www
       cordova-hcp local server available at: http://localhost:31284
       cordova-hcp public server available at: https://fd872c9f.ngrok.io
       File changed:  /Users/dhbm/Desktop/ion20160925/cdvDemo20161227/www/index.html
       Build 2017.01.16-10.00.31 created in /Users/dhbm/Desktop/ion20160925/cdvDemo20161227/www
    12、修改 plaug 的 chcp.js,加上 调试代码,remove/add platform 重新来过
        看到调试代码了,下次继续!
        
## 20170113 处理 热更新
    1、参考 http://www.phonegap100.com/article-491-1.html
    2、安装热更新插件
        sudo cordova plugin add cordova-hot-code-push-plugin
    3、安装 热更新本地开发插件
        sudo cordova plugin add cordova-hot-code-push-local-dev-addon
        ** 这个插件装不装其实也没有影响,因为我们不是要求实时更新界面的,而且在正式发布App的时候必须得移除这个插件
        
    3、cordova build ,没有发现在我们config.xml动态加入什么内容
    4、参考 http://www.cnblogs.com/johnzhu/p/5830450.html
      sudo npm install -g cordova-hot-code-push-cli
      (用来动态生成chcp.json和chcp.manifest两个文件)
    4、重新来过,这次使用命令 cordova-hcp build
        ** 依然没有发现在我们config.xml动态加入什么内容
    5、参考 http://blog.csdn.net/zhuzhiqiang_zhu/article/details/53608398
    6、在 config.xml 手动增加 chcp 节点,然后重新来过

© 著作权归作者所有

共有 人打赏支持
wwzzhh166
粉丝 3
博文 91
码字总数 89311
作品 0
东城
架构师
私信 提问
cordova 常用命令、插件

安装 cordova: npm install -g cordova 创建应用程序 cordova create hello com.example.hello HelloWorld 添加平台 cordova platform add android cordova platform add ios 完成后运行以下......

Jack088
2015/03/24
0
2
Ionic实现iOS与Android端代码『热更新』

热更新的好处 通常ionic源码可包括(HTML,JavaScript,CSS文件和其他资源),往常我们必须通过提交程序到应用市场,经过漫长的审核后才可让用户更新,每改动一个小地方都需要重新打新版本。...

两毛五哥哥
2018/02/09
0
0
cordova热更新插件-不发布应用市场动态更新APP源码

cordova热更新插件-不发布应用市场动态更新APP源码 1. 什么是热更新 主要是指不让用户去应用市场上面重新下载安装包,或者重新安装升级包,实现APP的更新升级 一个cordova应用包括(HTML,J...

htzhanglong
2016/04/12
3.2K
1
cordova热更新插件-不发布应用市场动态更新APP源码

cordova热更新插件-不发布应用市场动态更新APP源码 1. 什么是热更新 主要是指不让用户去应用市场上面重新下载安装包,或者重新安装升级包,实现APP的更新升级 一个cordova应用包括(HTML,J...

htzhanglong
2016/04/16
608
2
Cordova应用的JavaScript代码和自定义插件代码的调试

我之前写过三篇Cordova相关的技术文章。当我们使用Cordova将自己开发的前端应用打包安装到手机上后,可能会遇到需要调试Cordova应用的时候。 本文就介绍Cordova应用的调试步骤。 如果大家读过...

jerrywangsap
2018/09/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

nacos之springboot

本地操作系统:ubuntu18,我使用docker的方式启动nacos服务 docker image方式启动nacos 在docker hub上可以搜到nacos-server List-1.1 拉去最新的版本 mjduan@mjduan-ubuntu:/opt/software$ ...

克虏伯
26分钟前
2
0
指针数组和数组指针的区别

这两个名字不同当然所代表的意思也就不同。我刚开始看到这就吓到了,主要是中文太博大精深了,整这样的简称太专业了,把人都绕晕了。从英文解释或中文全称看就比较容易理解。 指针数组:arr...

天王盖地虎626
58分钟前
3
0
Qt那些事0.0.18

今天要记一下Qt中的Resource。自我感觉理解的不错,但是还会难免有谬误,在日后有可能会更新,也有可能不会。 小声的念叨一句,女人心,海底针。 今天就直接跳过了关于QML在qrc文件中的介绍,...

Ev4n
今天
2
0
深入解析js的作用域、预解析机制

虽然,ES6在我们工作中应用得越来越广泛,但是还是很多项目保留着ES5的写法,所以,今天,带着大家重新巩固下ES5下的作用域及预解析机制。 概念: 作用域:域,指的是一个空间、范围、区域,...

前端攻城老湿
今天
2
0
Spring Cloud Feign - 声明式 REST Client

1、Feign是什么 声明式REST client,来自NetFlix。 允许你编写无实现代码调用REST services 替换RestTemplate(甚至更简单) Spring Cloud 为使用Feign提供了包装器 2、怎样使用Feign 对比:...

Benz001
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部