## 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 节点,然后重新来过
转载于:https://my.oschina.net/u/1440971/blog/826492