今天有時間我來說一下,對於棋牌遊戲來說我們如何正確打android包與正確更新整個包體。
android-studio的打包apk
如今對於新生成項目的同學,我想對你們說,你的路是對的,因爲只有自己嘗試搭建項目了你才知道一個項目的完整流程是什麼,在過程中會遇到很多你以前沒有遇到過的問題。
使用AndroidStudio去開發安卓段並且打包,因爲如今已經有很多的項目推薦使用,他是如此方便接入第三方,配置項目屬性,甚至通過編譯過程中生成中間件來完美一件打包。
下面就是android具體的打包流程:
1.導入android-studio項目
對就是他,他比proj.android要省事的多,會自動將你的cocos下libcocos2dx包庫項目引入項目中。不用你手拖了。
2.android-studio會先更新項目插件,不用管它等一會就好
待到出現此類信息是就可以進行下一步了。
3.配置Edit Configurations打包命令
這樣就配置成功外部編譯工具的方式了
4.編譯生成apk
棋牌類遊戲的熱更新
我們對於熱更的遊戲來說一定需要分包處理,不然會導致資源過大,加載緩慢,加大熱更失敗的可能性,所以一般棋牌類遊戲會有3塊處理區域
1.啓動區(初始化配置,更新檢測以及更新,等操作)
2.大廳區(除遊戲外的所有附屬功能,啓動遊戲框架等)
3.遊戲區(每一個子遊戲的程序腳本,資源等)
對於這樣的三塊來說我們很有必要擁有單獨熱更的能力。
對於熱更新最基本的是需要有對比每一個文件是否相同的能力,從而盤帶你是否更新此文件。爲此我們需要問每一個文件添加MD5形成映射表。
@echo off
//生成base的文件映射
rem base
MakeMD5List -dst %temp% -src ..\client\ciphercode\base
copy %temp%\filemd5List.json ..\client\ciphercode\base\res\filemd5List.json
del %temp%\filemd5List.json
//生成client的文件映射
rem client
MakeMD5List -dst %temp% -src ..\client\ciphercode\client
copy %temp%\filemd5List.json ..\client\ciphercode\client\res\filemd5List.json
del %temp%\filemd5List.json
//game_list.txt遊戲列表路徑文件
//生成每個遊戲的文件
set /a game_count=0
rem game list
for /f "skip=1 tokens=1,2,3,4,5,6,7,8,9,10 delims==," %%a in (game_list.txt) do (
echo game name %%b
del %%d\filemd5List.json
MakeMD5List -dst %temp% -src ..\%%d
copy %temp%\filemd5List.json ..\%%d\res\filemd5List.json
del %temp%\filemd5List.json
set /a game_count+=1
if errorlevel 1 goto OnError
)
for /f "skip=1 tokens=1,2,3,4,5,6,7,8,9,10 delims==," %%a in (game_list_64bit.txt) do (
echo game name %%b
del %%d\filemd5List.json
MakeMD5List -dst %temp% -src ..\%%d
copy %temp%\filemd5List.json ..\%%d\res\filemd5List.json
del %temp%\filemd5List.json
if errorlevel 1 goto OnError
)
if errorlevel 0 goto Finish
:OnError
echo make md5 error
pause
:Finish
echo.
echo.
echo 處理遊戲數目 %game_count%
echo.
echo.
對此我相信大家都回想到使用網狐提供的MakeMD5List.exe工具專門通過bat文件生成對應的json映射文件,以及一些拷貝操作。
爲了減少包體積我們往往會進行壓縮,最後將base,client放入遊戲asset中。遊戲則是放到服務器中下載下來解壓使用。
在啓動遊戲時。
1.檢測本地是否有zip有則解壓加載
2.向服務器發送請求校驗本地是否有版本記錄(優化:映射文件中添加版本號與服務其版本號比對減少不必要的資源)
3.沒有版本記錄,下載遠程映射文件(filemd5List.json)Md5比對,不同不能夠添加到下載對列中等待下載
4.有版本記錄,nNewV > nCurV執行同上,反之跳過此步驟
5.開啓多個下載進程,如平分到3個線程中,執行下載程序(如共需下載100個文件),單個文件下載完成回調,文件寫操作,存儲操作等
6.文件下載數完成到100時執行completeCallBack回調執行其餘操作,重啓或者熱加載
嗯,大概就是這個樣子,你可以自己完善功能,這裏只是介紹略的操作流程。