Unity优化包体
編譯首包
1.使用il2cpp編譯導出Android工程
2.使用Android Studio的Apk Analyze分析當前apk的大小
清理插件
這一步是比較快且收益比較高的,一般一些第三方的插件都可以較快的發現和清理,可以把一些不需要的插件進行清理,全局搜索Asset下的Plugins目錄,把不需要的刪除即可
注:可能有些插件刪除了后,編譯的apk出現閃退的情況,需要關注AndroidManifest.xml中對插件的引用,在刪除插件后,刪除對應的配置。
修改編譯設置
1.使用il2cpp編譯時會出現Strip Engine Code和Managed Stripping Level兩個選項,這可以用來設置Unity在編譯時剝離未使用代碼的程度,可以嘗試將Managed Stripping Level設置為high,使導出的libil2cpp.so最小,如果出現程序運行錯誤,需要排查,可能需要在link.xml中加入一些class,保證它們不被strip,或者將Managed Stripping Level設置為Medium或low。詳情可以看Unity官方文檔:托管代碼剝離
2.ProhectSetting->Graphics中的一些設置需要關注,如Build-in Shader Setting,Shader Stripping,Shader Preloading等
3.BuildSetting中將Compression Method修改為LZ4HC,可以將包體中的資源壓縮到最小,且集中打包到單個文件data.unity3d中,便于后續查看包內剩余資源
冗余資源排查
對于Unity項目來說,構建進apk的資源一般都是被scene引用或者存放在Resources中的所以重點觀察Assets目錄下所有目錄名為Resources的文件夾,然后Check一下Build Setting中否有引用不需要的Scene,另外,StreamingAssets下的所有內容也會被無壓縮的打入apk包中
對于冗余資源的判斷,動態加載的需要通過代碼分析,靜態引用的可以使用Find Refrence 2等插件排查,也可以通過AssetStudio查看打出的apk包中具體包含的資源,確認是否有不需要的資源被打入
資源壓縮
一般來說貼圖壓縮帶來的收益比較大,許多項目使用的是ARGB32的格式,在畫質損失程度可以接受的條件下,可以考慮使用ASTC格式壓縮,使用AssetStudio工具可以定位占用較大的資源
總結
- 上一篇: 技术分享:逆向海盗船k95机械键盘
- 下一篇: 麻醉是怎么回事