(原)cocos creator集成熱更新

官方有提供demo。demo鏈接:https://github.com/cocos-creator/tutorial-hot-update。

在這里講一下我是怎么集成到自己新建的項目中去的。

環(huán)境:cocos creator1.5.0,Xcode或直接打包成apk測試也行。用cocos creator自帶的模擬器貌似不行的,會崩潰。

需要服務(wù)器。

注意:貌似cocos creator1.5.0以下的有漏洞,本人用低版本的creator會報錯??吹秸搲姓f1.5版本的可以,親測,1.5版本可以集成。

下面是本人的集成步驟:

1.從官網(wǎng)上下載version_generator.js,放到新建的工程hotUpdateTry文件下,

然后構(gòu)建一下你的工程(本人使用defalut,調(diào)試模式做的測試)。

2.頁面寫完后構(gòu)建一下,找到把剛剛構(gòu)建的jsb-default下的res和src文件。

3.打開終端,進入hotUpdateTry目錄下(cd hotUpdateTry的路徑),回車,執(zhí)行命令:

node version_generator.js -v 1.0.0 -u http://你的服務(wù)器地址/tutorial-hot-update/remote-assets/ -s build/jsb-default/ -d assets/

解釋:-v 1.0.0 意思是版本號1.0.0,

http://你的服務(wù)器地址/? ? ? 是服務(wù)器地址

tutorial-hot-update/remote-assets/ 是你要放到服務(wù)器上的代碼文件

更新的資源主要是構(gòu)建后的res和src文件。

-d assets/ 該命令執(zhí)行完會在assets文件下生成兩個文件:version.manifest和project.manifest,這兩個文件很重要,服務(wù)器上也要根據(jù)這兩個文件來判斷是不是要更新版本和下載代碼。

這些做完后,你可以仿照官方熱更新demo給你的場景中加上熱更新按鈕。點擊更新等。

重點來了:

服務(wù)器上的代碼應(yīng)該放什么呢?

你可以看看官方demo中的remote-assets文件,這個就是服務(wù)器上要放的代碼。也就是項目構(gòu)建代碼后的核心代碼。remote-assets這個里面包含res,src和剛剛生成的project.manifest,version.manifest。這幾個文件。這個是不是很熟悉?你可以把這四個文件都放到tutorial-hot-update/remote-assets/下。然后把tutorial-hot-update文件上傳服務(wù)器。


服務(wù)器上的tutorial-hot-update/remote-assets/下的代碼目錄

按照你剛剛命令行敲的,你服務(wù)器代碼代碼結(jié)構(gòu)需這樣:

http://你的服務(wù)器地址/tutorial-hot-update/remote-assets/。

如果你想改后面的文件夾名字,你就也需要改你剛剛的命令行或者直接改project.manifest,version.manifest文件里的熱更新地址為你實際的服務(wù)器地址及文件夾名字。

注意:

本地的打包后的apk或者ipa更新的話會對比服務(wù)器上的project.manifest,version.manifest版本號。當(dāng)服務(wù)器版本號高于你現(xiàn)在安裝的這個版本的時候,才會下載服務(wù)器上的代碼,然后你安裝的應(yīng)用內(nèi)容才會自動更新。注意兩個文件版本號都改。



這樣,用戶安裝完你的應(yīng)用后,只要你的應(yīng)用版本和服務(wù)器版本作對比,版本號低于服務(wù)器就更新代碼,用戶安裝的應(yīng)用就自動更新了,不用重新去應(yīng)用商店下載了。

這個熱更新主要是用于ios和安卓的。

提示:

其實項目除了第一次構(gòu)建會生成很多文件外,后來只要已build過,再build,frameworks文件夾基本不變,只變外面的內(nèi)容,代碼和資源文件核心內(nèi)容就在于src,res文件,你打包的時候可以注意一下,更改這些文件夾,頁面就跟著改變了。所以把這些重要文件放到服務(wù)器就可以了。




這里很重要?。?!

當(dāng)你遇到你的文件下載完自動重啟了游戲還是原來的界面并沒有更新的時候?。?!注意檢查你的main.js代碼??!

main.js

就是這個代碼:

if (cc.sys.isNative) {

var hotUpdateSearchPaths = cc.sys.localStorage.getItem('HotUpdateSearchPaths');

if (hotUpdateSearchPaths) {

jsb.fileUtils.setSearchPaths(JSON.parse(hotUpdateSearchPaths));

}}


正常情況下時自動生成的,但是本人遇到好多次它并沒有自動生成,這時候你把這句代碼復(fù)制到這里就可以了,然后運行你本地代碼,發(fā)現(xiàn)更新成功!!不再是舊界面。


服務(wù)器的話,本人使用的mamp和mamp pro,安裝后,啟動mamp把需要更新的代碼放到它的安裝目錄的 /Applications/MAMP/htdocs下就可以了,訪問目錄名字一般是這樣的:http://192.168.xx.xxx/tutorial-hot-update/remote-assets/

想測試你的代碼是否在服務(wù)器上正常訪問可以嘗試一下這樣:

http://localhost/tutorial-hot-update/remote-assets/project.manifest

看看你的文件可以查看嗎?正常顯示你的文件就說明你的服務(wù)器開啟正常了。

小注:本人在熱更新的時候遇到了場景更新成功但是js文件修改的內(nèi)容沒修改的問題,找了很久解決方法,后來發(fā)現(xiàn),在調(diào)試模式下測試(即構(gòu)建后src文件夾都是.js文件)會出現(xiàn)場景更新,js不更新。而在發(fā)布模式下測試(即構(gòu)建后src文件夾里都是.jsc文件)沒出現(xiàn)這種問題,全部更新正常!如果有人遇到這種情況也可以試試構(gòu)建時不選擇調(diào)試模式哦.


注意2:如果之前更新的好好的,突然某一天你大改一下圖片之類的素材文件后發(fā)現(xiàn)熱更失敗,這時候你可以試試你刪掉之前本地build的res 、src等文件,注意是刪掉!不是覆蓋,重新生成,再試試你的更新

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,553評論 19 139
  • 文章作者:Tyan博客:noahsnail.com | CSDN | 簡書 19. Running your ap...
    SnailTyan閱讀 1,870評論 0 5
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,023評論 25 709
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 47,272評論 6 342
  • 拿貨,改頁面,發(fā)路口新品預(yù)覽,改拼多多頁面,發(fā)貨。一天又過去了。 下午和哥哥聊了一會兒,他說媽對沐熙爸媽還是很愧疚...
    維克多的煩惱閱讀 235評論 0 0

友情鏈接更多精彩內(nèi)容