Cordova 熱更新處理(一):調試歷程

## 20170116 繼續處理 熱更新
    一、上午明白了幾個關鍵思路和功能後,繼續
        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
    二、當前項目上午已經 cordova-hcp init 過,因此,直接 cordova-hcp build
    三、先彆着急運行,若是直接 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 會大於我如今創建的這個呢?
    四、卸載手機的舊版本
    五、先 copy 目前的 www 到    "content_url": "http://192.168.1.103/hot20170113/www",
    六、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 (沒有能夠更新的內容)
    七、手工修改一下 index.html,而且 sudo cordova-hcp build,而後 copy www 到  content_url
    八、在手機退出 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 收到了原聲的廣播
    九、退出 app ,再次進來
            哈哈哈哈!index.html 面目一新了!
    十、下一步:在 ionic 項目實現熱更新,。在 ios 模擬器 測試效果
            
## 20170116 繼續處理 熱更新
    一、sudo cordova-hcp server 會看到
      "content_url": "https://fd872c9f.ngrok.io",
      "config_url": "https://fd872c9f.ngrok.io/chcp.json"
    二、理解本地調試,不是指的我在本機設置一個網站,而是以上 content_url
        ** 以上測試經過後,就不要使用 本地模式了
         <local-development enabled="false"/>.
    三、官產 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
    四、觀察 android/res/config.xml,沒有 content-uri,因此 app 不知道在哪裏下載更新
    五、理解 cordova-hcp init,須要輸入 報名、版本之類,修改 config.xml ,加上 versionCode 等
        ** 缺省創建的項目 沒有如下 versionCode,先加上
        android-versionCode="7"
        ios-CFBundleVersion="3"
    六、先到這裏,下次繼續  

## 20170116 繼續處理 熱更新
    一、換個 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
    二、去掉             <auto-install enable="true">
        ** 不行!
    三、繼續去掉 <auto-download enable="true"/>
        ** 不行!
    四、難道是由於 cordova-hcp.json?刪除!
    五、刪除程序,從新運行,也不行!
    六、完全刪除
                    <auto-download enable="true">
                    <auto-install enable="true">
      ** 此次能夠了!剛纔都是改爲 false
    五、反向再回復
                   <auto-download enable="false"/>
                   <auto-install enable="false"/>
      ** 趨勢不行,加上這 2 個選項就不對!
                            
## 20170114 繼續處理 熱更新
    一、修改 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碼值
    二、新創建一個 cordova-hcp.json,在項目根目錄,內容以下   
        {
          "update": "start",
          "content_url": "http://192.168.1.103/hot20170113/www"
        }
    三、重頭來過,
        ** 檢查 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>
    四、運行 sudo cordova run android  
        靠!直接退出!難道個人 p9 不支持?        
    五、修改 index.html,後,
        sudo cordova-hcp build
        copy www 到 http://192.168.1.103/hot20170113/www
    先到這裏,下次繼續!
        
## 20170114 繼續處理 熱更新
    一、在本機創建測試黃靜
        ** LAN 固定 ip /192.168.1.103
        ** 本機虛擬目錄創建一個目錄 hot20170113
        *** 在手機測試 http://192.168.1.103/hot20170113/
        ok!
    二、修改 config.xml
            <chcp>    
                <config-file url="http://192.168.1.103/hot20170113/chcp.json"/>  
            </chcp>
    三、從新 build , cordova-hcp build
        ** android/assets/www 下沒有看到 chcp.json
        ** 從新build android , sudo cordova build android
        ** 此次有了 chcp.json,chcp.menifest
    四、copy www 目錄下到個人虛擬目錄去
    五、打開 android/assets/www 目錄下的 chcp.menifest,記下一個 hash,用於修改後對比,以便確認是否在改變
        "file": "index.html",
        "hash": "44e249d8e1379d12a360efe37c4d43a8"
    六、在 index.html 隨意修改點什麼 ,而後再 build
    七、再打開 android/assets/www 目錄下的 chcp.menifest,沒有發現變化?
    八、發現有個錯誤提示
        Can't find .chcpenv config file with local server preferences. Did you run "cordova-hcp server"?
    九、那就先 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
    十、再來 sudo cordova build,以後查看 android/assets/www 目錄下的 chcp.menifest
       "file": "index.html",
       "hash": "c7c97e6012b265d70d9b3835e237a692"
       *** 哈哈哈哈,果真改變了!
    十一、淡然,以上這一輪僅僅是確認變化,沒有發佈 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
    十二、修改 plaug 的 chcp.js,加上 調試代碼,remove/add platform 從新來過
        看到調試代碼了,下次繼續!
        
## 20170113 處理 熱更新
    一、參考 http://www.phonegap100.com/article-491-1.html
    二、安裝熱更新插件
        sudo cordova plugin add cordova-hot-code-push-plugin
    三、安裝 熱更新本地開發插件
        sudo cordova plugin add cordova-hot-code-push-local-dev-addon
        ** 這個插件裝不裝其實也沒有影響,由於咱們不是要求實時更新界面的,並且在正式發佈App的時候必須得移除這個插件
        
    三、cordova build ,沒有發如今咱們config.xml動態加入什麼內容
    四、參考 http://www.cnblogs.com/johnzhu/p/5830450.html
      sudo npm install -g cordova-hot-code-push-cli
      (用來動態生成chcp.json和chcp.manifest兩個文件)
    四、從新來過,此次使用命令 cordova-hcp build
        ** 依然沒有發如今咱們config.xml動態加入什麼內容
    五、參考 http://blog.csdn.net/zhuzhiqiang_zhu/article/details/53608398
    六、在 config.xml 手動增長 chcp 節點,而後從新來過
相關文章
相關標籤/搜索