1.查詢本地版本文件獲取版本信息(本地版本文件與腳本的版本信息不同時(shí)需將腳本中的最新版本信息寫入版本文件中)
2.將本地版本信息發(fā)送給后端,與后端記錄的版本進(jìn)行比較。
3.若版本不對(duì)量窘,后端返回最新的版本號(hào)和相應(yīng)更新文件url文件列表和對(duì)應(yīng)的md5碼
4.根據(jù)最新url和給定的md5碼榜配,同時(shí)獲取本地同名文件的md5碼岂津。比較遠(yuǎn)程的和本地的md5碼誊爹,若不相同視為需要更新的文件贞远,將其加入下載文件列表畴博。
5.執(zhí)行下載操作,setpackurl蓝仲,setstoragepath以及成功俱病,錯(cuò)誤,進(jìn)程的回調(diào)函數(shù)袱结。在下載成功回調(diào)函數(shù)中判斷下載列表中的文件是否全部下載完畢亮隙,若沒下載完畢繼續(xù)執(zhí)行下一文件的下載,執(zhí)行完畢則進(jìn)入解壓狀態(tài)垢夹∫缥牵【用到了curl庫(kù),和cocos2dx的AssetsManager熱更新類】
6.解壓文件果元,與下載列表生成方式相似促王,生成解壓文件列表,進(jìn)行解壓操作而晒。在解壓成功回調(diào)函數(shù)中判斷解壓列表中的文件是否全部解壓完畢蝇狼,若沒解壓完畢繼續(xù)執(zhí)行下一文件的解壓,執(zhí)行完畢則進(jìn)入數(shù)據(jù)庫(kù)更新狀態(tài)倡怎。
7.獲取在解壓后的路徑下搜尋數(shù)據(jù)庫(kù).csv文件迅耘,生成需要更新的數(shù)據(jù)庫(kù)文件列表,進(jìn)入數(shù)據(jù)庫(kù)更新狀態(tài)诈胜”希【使用zlib庫(kù)解壓】
8.更新數(shù)據(jù)庫(kù),有同名表則刪除焦匈,然后重新建新表血公,無同名表則創(chuàng)建新表,加入數(shù)據(jù)庫(kù)缓熟±勰В【用到了外部引入到 require("lsqlite3") ,cocos引擎沒有帶】
9.重啟游戲够滑。
需要學(xué)習(xí)curl垦写,zlib,lsqlite3庫(kù)的用法