開發(fā)環(huán)境
Cocos Creator 3.5.2
需求
在日常的工作中,我們常常有這樣的需求
- 在具有多個(gè)關(guān)卡的游戲中,挑選某些關(guān)卡作為發(fā)包內(nèi)容。
- 根據(jù)不同打包渠道中設(shè)置不同的壓縮參數(shù),對資源進(jìn)行壓縮。
- 對目標(biāo)資源進(jìn)行加密
- .....其他處理
- 出包
如果每一步之間都具有間歇,且都需要手動(dòng)操作,則存在兩個(gè)弊端:
- 繁瑣,耗時(shí),工作效率相當(dāng)?shù)汀?/li>
- 容易遺漏,出錯(cuò)。
而且通常這類需求一旦確定,極少修改。因此,盡量將其實(shí)現(xiàn)一鍵化,能夠非常大限度地提高效率、降低出錯(cuò)率,打包的期間也可以喝喝咖啡,事半功倍。
實(shí)現(xiàn)方式
一. creator 編輯器提供的自定義構(gòu)建流程

該方法羽毛只做了簡單的了解與調(diào)研,暫未實(shí)踐,后續(xù)實(shí)踐結(jié)束后將推出文章分享。
官方介紹文檔:
- 構(gòu)建流程簡介:https://docs.cocos.com/creator/manual/zh/editor/publish/build-guide.html
- 自定義構(gòu)建流程:
https://docs.cocos.com/creator/manual/zh/editor/publish/custom-build-plugin.html
優(yōu)點(diǎn):
- 可介入的流程較多
-
能夠使用Cocos Creator提供的一些api,也能夠在js代碼中調(diào)用命令行。
- 跨平臺效果較好。
缺點(diǎn):
- 需要對構(gòu)建流程有所了解,以及api調(diào)用方法等,有一定的學(xué)習(xí)成本。
?
?
二. win/mac的shell/sh腳本
- Cocos Creator提供了命令行構(gòu)建的方式,可以與sh、shell等結(jié)合實(shí)現(xiàn)更多自定義操作。

-
通過觀察構(gòu)建參數(shù),我們可以發(fā)現(xiàn)這里提供了參數(shù)文件路徑的指定,這樣我們就可以將編輯器構(gòu)建面板中的參數(shù)導(dǎo)出為配置文件后,通過命令行進(jìn)行構(gòu)建,命令行操作與在構(gòu)建面板上點(diǎn)擊構(gòu)建的效果等效。
導(dǎo)出構(gòu)建配置文件后,可在構(gòu)建前、構(gòu)建后配合其他命令進(jìn)行流程定制/例如:
- 可在構(gòu)建命令前通過命令行移動(dòng)無關(guān)資源到臨時(shí)文件夾,構(gòu)建后移動(dòng)回原位置,實(shí)現(xiàn)分渠道分資源打包的需求。
- 可在構(gòu)建命令后通過命令行進(jìn)行圖形文本資源加密與壓縮、音頻資源壓縮等。
- 包體生成:
對于H5/微信小游戲等h5端,構(gòu)建命令結(jié)束后包體即打包完成。
對于android平臺,還需要調(diào)用gradle打包命令才能完成包體的生成。而對于ios則可以使用xcrun命令進(jìn)行自動(dòng)化打包。
將以上命令編寫完成后,保存為bat/sh腳本文件,只需雙擊,就可以實(shí)現(xiàn)不同渠道差異化處理資源、各類資源壓縮加密、包體生成等一系列操作的一鍵完成,不易出錯(cuò)且無需間歇,大大提升出包舒適度,每天多出幾份喝咖啡的時(shí)間。
example(android)

優(yōu)點(diǎn):
- 上手簡單,快速實(shí)現(xiàn)。
- 維護(hù)修改方便。
- 市面上有大量現(xiàn)成且優(yōu)秀的壓縮、加密等資源處理工具可以通過命令行調(diào)用,還可在調(diào)用這些工具時(shí)指定不同的參數(shù),可以針對不同渠道和平臺指定不同的壓縮參數(shù)等,進(jìn)一步細(xì)化性能與表現(xiàn)的平衡。
缺點(diǎn):
- 只可在構(gòu)建前與構(gòu)建后(生成前)參與一些流程定制,無法接入構(gòu)建中的流程。
- Windows/Mac需要分別維護(hù)bat/sh腳本文件。
小結(jié)
以上是羽毛對兩種自定義構(gòu)建流程實(shí)現(xiàn)方式的思考,選擇哪種方法主要基于學(xué)習(xí)成本、需求與維護(hù)成本進(jìn)行思考,希望我的分享對大家的日常開發(fā)能夠有所幫助。
其他打包技巧分享
- 當(dāng)我們打包時(shí)調(diào)試時(shí),如果需要對多種cpu(armeabi-v7a\arm64-v8a\x86\x86_64)進(jìn)行編譯,可以在build.gradle指定為debug包配置只編譯arme-v7a一種cpu支持,減少N倍的編譯時(shí)間,同時(shí)也不會易出錯(cuò)。


有同學(xué)認(rèn)為也可以通過設(shè)置PROP_APP_ABI實(shí)現(xiàn),設(shè)置PROP_APP_ABI=armeabi-v7a:arm64-v8a容易導(dǎo)致發(fā)布版本時(shí)遺漏,忘記改回,導(dǎo)致出release包時(shí)出錯(cuò)。而通過上述方式只影響debug包,而日常我們調(diào)試也恰巧更喜好debug包。
- 可以配置根據(jù)versionName、versioncode等參數(shù)對輸出包體進(jìn)行命名。便于包體管理。

打包后,可以擁有漂亮、便于區(qū)分的文件名,關(guān)心的關(guān)鍵信息一目了然

更多
CocosCreator3.4.2原生二次開發(fā)的正確姿勢——手把手教你接SDK
關(guān)于作者
我是羽毛,一名游戲研發(fā)工程師,一名野生攝影同學(xué)。我的公眾號主要分享自己的一些游戲項(xiàng)目開發(fā)過程中的功能總結(jié)及日常開發(fā)筆記。也希望能通過平臺的交流,與更多有想法的同學(xué)交流認(rèn)識,共同成長。
歡迎大家在日常開發(fā)過程中,如果覺得有需要討論解決、分享或者探討的內(nèi)容,在公眾號后臺或者文章留言處給我反饋,提供寫作的方向,從另一個(gè)角度也盡量讓寫作內(nèi)容更貼近大家的需求以及痛點(diǎn),在此謝謝各位同學(xué)

今日技能你學(xué)廢了嗎?
<div align ="center">
<h2>更多精彩歡迎關(guān)注微信公眾號</h2>
<img src="https://upload-images.jianshu.io/upload_images/21178773-2b1591dae54346cc.png" width="80%"/>
<img src="https://upload-images.jianshu.io/upload_images/21178773-5d7155f1329efbdd.png" />
</div>
本文由mdnice多平臺發(fā)布


