## 20170118 继续处理 ionic 热更新 一、简单起见,整个项目设置为:可读写 二、给 hot 插件加上调试信息后,从新 add platforms 三、android-versionCode="170704" 又出现问题,待处理,先删除手机上的旧版本 四、6.0 手机。重设权限:存储 以后,再次运行,终于看到了 chcp_nothingToUpdate 01-18 15:22:42.047: I/chromium(13888): [INFO:CONSOLE(63)] "{"action":"chcp_nothingToUpdate","data":{"config":"{\n \"name\": \"IonicDemo\",\n \"ios_identifier\": \"\",\n \"android_identifier\": \"\",\n \"update\": \"resume\",\n \"content_url\": \"http://192.168.1.103/hotIonic/www\",\n \"release\": \"2017.01.18-15.16.06\"\n}"},"error":{"code":2,"description":"Nothing new to load from server"}}", source: file:///data/user/0/com.dhbm.demo123/files/cordova-hot-code-push-plugin/2017.01.18-15.16.06/www/plugins/cordova-hot-code-push-plugin/www/chcp.js (63) 五、修改 menuSetting.html, sudo cordova-hcp build copy www 到 http://192.168.1.103/hotIonic/www 六、再次运行 app,中雨看到可爱的提示 logcat 01-18 15:27:44.854: I/chromium(13888): [INFO:CONSOLE(63)] "{"action":"chcp_updateIsReadyToInstall","data":{"config":"{\n \"name\": \"IonicDemo\",\n \"ios_identifier\": \"\",\n \"android_identifier\": \"\",\n \"update\": \"resume\",\n \"content_url\": \"http://192.168.1.103/hotIonic/www\",\n \"release\": \"2017.01.18-15.26.00\"\n}"}}", source: file:///data/user/0/com.dhbm.demo123/files/cordova-hot-code-push-plugin/2017.01.18-15.16.06/www/plugins/cordova-hot-code-push-plugin/www/chcp.js (63) 01-18 15:27:44.855: I/chromium(13888): [INFO:CONSOLE(80)] "actionId 555===chcp_updateIsReadyToInstall", source: file:///data/user/0/com.dhbm.demo123/files/cordova-hot-code-push-plugin/2017.01.18-15.16.06/www/plugins/cordova-hot-code-push-plugin/www/chcp.js (80) 01-18 15:27:44.855: I/chromium(13888): [INFO:CONSOLE(151)] "broadcastEventFromNative 6666 nativeMessage.error==", source: file:///data/user/0/com.dhbm.demo123/files/cordova-hot-code-push-plugin/2017.01.18-15.16.06/www/plugins/cordova-hot-code-push-plugin/www/chcp.js (151) 七、退出程序(无需强制中止),再次进来,切换到 杂项功能 *** 哈哈哈,面目一新了! 八、下一步: ios 模拟器调试 ## 20170118 处理 ionic 热更新 一、在本地创建一个虚拟目录 hotIonic 二、安装热更新插件 sudo cordova plugin add cordova-hot-code-push-plugin 三、安装 热更新本地开发插件 sudo cordova plugin add cordova-hot-code-push-local-dev-addon ** 这个插件装不装其实也没有影响,由于咱们不是要求实时更新界面的,并且在正式发布App的时候必须得移除这个插件 四、修改 config.xml,加入如下节点 <chcp> <local-development enabled="false"/>. <config-file url="http://192.168.1.103/hotIonic/www/chcp.json"/> </chcp> 五、准备执行如下命令(稳妥起见,能够先删除 platforms 已经存在的平台,从新加入) 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 "content_url": "http://192.168.1.103/hotIonic/www", 六、先修改 config.xml ,加上 android-versionCode="1" ios-CFBundleVersion="1" 七、sudo cordova-hcp init,除了如下 2 个须要输入,其余一概回车 Please provide: Enter project name (required): IonicDemo ** 这个是 config.xml 中的 name Please provide: Enter full URL to directory where cordova-hcp build result will be uploaded: http://192.168.1.103/hotIonic/www ** 这个 会生成 content-url,对照 config.xml 增长的 <chcp> 节点的 config-file url 八、虽然提示 Project initialized and cordova-hcp.json file created.可是没有看到 www 目录有 chcp.json 九、sudo cordova-hcp build,此次看到了 www 目录有 chcp.json ** 前一步的 cordova-hcp.json 在哪里呢?啊啊啊,找到了,在项目的根目录下 十、sudo cordova-hcp server ** 特地先设置为 false ,看看结果 <local-development enabled="false"/>. ** 看到如下提示 Running server Checking: /Users/dhbm/Desktop/ion20160925/ionicDemo20161228/www local_url http://localhost:31284 十一、打开 http://localhost:31284 ** 以前的代码 app 升级部分只判断了 online,没有加上 cordova 判断,浏览器会出现跨域错误,加上! ** 此时已经看到 terminal 里面的 log 有相应变化 ** 还有 XMLHttpRequest cannot load http://api.randomuser.me/?results=10. Cross-origin redirection denied by Cross-Origin Resource Sharing policy. ** 记得以前 这个不存在跨域冲突来着,怎么回事?难道升级 mac os 形成了 safari 变化?待处理 ** 本次测试只好不修改首页 index.html ,改成修改 menuSetting.html 1三、没有反应,改变 <local-development enabled="false"/> 为 true 再来! 仍是没有看到啊,先忽略 1四、copy www 到 http://192.168.1.103/hotIonic/www sudo cordova build,sudo cordova run android 直接测试 android You're trying to install apk with a lower versionCode that is already installed. Either uninstall an app or increment the versionCode. 缺省的 android-versionCode="0" ?再试试 还不行?!干脆删除试试 android-versionCode="0" ios-CFBundleVersion="0" 还不对!从 platforms/android/menifest.xml 找到 android:versionCode="170702",照这个同样设置 ** versionCode 相等是能够的! 1五、仍是不能 热更新,看来仍是要调试,下次再继续!