文章目錄
- 1 ?Gradle模板??:了解Gradle模板的作用及使用方法,以增強對構建流程的控制。
- ?2 ?Gradle模板變量??:參考文檔——自定義Gradle模板文件中可用的變量列表。
- 2.1 修改Unity應用的Gradle工程文件
- 2.1.1 通過Gradle模板文件
- 2.1.2 導出到 Android Studio
- 2.1.3 Android項目配置管理器
- 2.2 修改Unity應用的Gradle工程文件——通過Gradle模板文件
- 2.3 修改Unity應用的Gradle工程文件——通過Android項目配置管理器
- 2.4 修改Unity應用的Gradle工程文件——在Android Studio中改
- ??3 Android構建設置參考??:完整的Android構建設置參數說明文檔。
- 3.1 構建配置
- 3.2 發布格式
- 3.3 構建應用
- 3.4 應用簽名
- 4 ?導出Android項目??:將Unity項目導出為Android Studio可用的Gradle項目
- 5 ?優化分發大小??:減小應用安裝包體積的實用技巧和方法。
- 5.1 按目標架構拆分 APK 文件??
- 5.2 拆分應用二進制文件(Split Application Binary)
- 5.3 資源壓縮(Compression)
- 5.4 代碼裁剪優化(Minification)??
- ?6 Android數字分發服務??:滿足各分發平臺(如Google Play)特定要求的操作指南。
通過 Unity 官方文檔來學習~ https://docs.unity3d.com/6000.1/Documentation/Manual/android-building-and-delivering.html
這一部分章節的主要內容是:在Android平臺上構建并發布您的Unity應用程序。通過配置構建設置和修改Gradle項目文件,優化應用程序安裝包大小,并滿足Google Play的發布要求。
下面按文檔的順序依次進行閱讀,關鍵內容如下。
1 ?Gradle模板??:了解Gradle模板的作用及使用方法,以增強對構建流程的控制。
Unity構建Android,為了讓大家可以按自己實際需求去修改工程配置文件,是提供了兩個方案。
-
Gradle模板文件
Gradle模板文件跟最終的Android Studio工程中的文件是對應的。所以如果你熟悉Android Studio工程的文件目錄結構,直接看官方的圖就會非常清楚
-
在C#中直接修改
Unity提供了一個類
IPostGenerateGradleAndroidProject
及其方法OnPostGenerateGradleAndroidProject
,只要重載該方法就可以獲取到Android Studio工程unityLibrary模塊的路徑,進而得到整個工程的路徑,從而修改相關的文件內容。using UnityEditor; using UnityEditor.Android; using UnityEngine;class MyCustomBuildProcessor : IPostGenerateGradleAndroidProject {public int callbackOrder { get { return 0; } }// path:指向 ??Unity 庫 Gradle 項目根目錄??的路徑public void OnPostGenerateGradleAndroidProject(string path){Debug.Log("MyCustomBuildProcessor.OnPostGenerateGradleAndroidProject at path " + path);} }
?2 ?Gradle模板變量??:參考文檔——自定義Gradle模板文件中可用的變量列表。
這一部分沒有什么特別要看的。主要就是Unity預設的變量,在Gradle模板中使用這些變量,實際的值是取決于你工程內的配置。比如APIVERSION
,這個最終就會根據你Android Player Settings配置的Target API Level來確定,比如35。
?# ?修改Gradle項目文件??:在構建Android應用過程中調整Gradle項目文件的方法。
2.1 修改Unity應用的Gradle工程文件
2.1.1 通過Gradle模板文件
Unity 通過模板生成最終的 Gradle 項目文件。開發者可通過覆寫模板控制文件生成邏輯。Gradle 在構建過程中會:
- ??合并清單文件??:自動整合 Android 庫中的 Manifest 配置,確保最終主清單(AndroidManifest.xml)配置正確性。
?2. ?版本兼容問題:使用自定義模板文件時,若升級 Unity 版本(其默認模板可能變更),必須重新適配自定義模板,否則可能導致構建失敗
2.1.2 導出到 Android Studio
?1. ?Unity 導出 Android 項目時,會生成 Gradle 項目文件并輸出到指定目錄,可以驗證通過模板或配置管理器的修改是否生效。另外也可在 Android Studio 中直接編輯這些文件。
??2. ???優先在 Unity 內修改??:通過 Gradle 模板或 Android Project Configuration Manager 調整配置,避免每次導出后重復修改
2.1.3 Android項目配置管理器
?1. 提供 C# 類庫接口,用于設置和修改??自定義模塊??的 Gradle 文件。開發者可通過代碼動態干預構建流程。
?2. ?關鍵限制??:
- ??不可修改默認模塊??:無法直接編輯 unityLibrary 和 launcher 模塊的原始 Gradle 文件
- ?支持自定義模塊??:可在默認模塊內創建子模塊并配置其 Gradle 腳本
?3. ?執行時機??:配置在??構建后處理階段??(OnModifyAndroidProjectFiles 接口)生效,允許開發者覆蓋 Unity 的默認值
2.2 修改Unity應用的Gradle工程文件——通過Gradle模板文件
具體步驟直接看官網文檔的步驟即可
1. Go to Edit > Project Settings to open the Project Settings window.
2. Select the Player tab, then open Android Player Settings
3. In the Publishing Settings section, enable the checkbox that corresponds to the Gradle project file type you want to create a custom template for. This creates a Gradle project template file and displays the path to the file.
4. Modify the template file to control the final format and contents of the final Gradle project file.
這里簡單總結幾點內容
- 如果你用模板文件,寫入你自己需要的內容,放到Unity工程/Plugins/Android目錄下,就會生效。
- 如果你用的模板文件的內容,跟Unity工程中Android Player settings的不一致,請注意優先級更高的是Unity工程中Android Player settings。
- 為了確保你用模板文件的內容是實際生效了,Unity是建議是導出個Android Studio工程,實際看看效果。
2.3 修改Unity應用的Gradle工程文件——通過Android項目配置管理器
為什么要單獨有這個東西呢?為什么不能就直接用OnPostGenerateGradleAndroidProject即可,為什么不允許編輯 unityLibrary 和 launcher 模塊的 Gradle 文件。
在這個文檔中有介紹:https://docs.unity3d.com/6000.1/Documentation/Manual/how-unity-builds-android-applications.html
2.4 修改Unity應用的Gradle工程文件——在Android Studio中改
這個對熟悉安卓開發的人就比較方便了,不需要多講了。
??3 Android構建設置參考??:完整的Android構建設置參數說明文檔。
比較常規的?Android構建設置,需要的時候查閱文檔即可。
?# 構建?Android應用程序??:將Unity項目編譯為Android應用的操作流程。
3.1 構建配置
分為下面兩部分,先不展開~
- Player settings: Configure runtime and build settings for the application.
- Build settings: Configure build system settings.
3.2 發布格式
- APK
- AAB
構建AAB的操作流程??:
- 打開 Unity Editor,依次選擇:文件(File) > 構建配置文件(Build Profiles)。
?2. ?選擇 Android 平臺??
?3. ?勾選 ??Build App Bundle (Google Play)??。此選項僅在?導出項目(Export Project)??禁用時可見。若需導出到 Android Studio 構建:啟用 ??導出項目(Export Project)??,并勾選 ??為應用程序包導出(Export for App Bundle)
3.3 構建應用
就是在Unity Editor里面依次點點點,然后開始構建。先不展開~
3.4 應用簽名
先不展開~
4 ?導出Android項目??:將Unity項目導出為Android Studio可用的Gradle項目
選擇安卓平臺然后勾選Export Project再構建就可以。先不展開~
5 ?優化分發大小??:減小應用安裝包體積的實用技巧和方法。
5.1 按目標架構拆分 APK 文件??
我們構建APK時,開啟 ??Player Settings (構建設置)?? 中的 ??Split APKs by target architecture (按目標架構拆分 APK)?? 選項可以優化應用程序的下載和安裝大小。Unity 不會生成一個包含 ??Target Architectures (目標架構)?? Player Setting 中所選的所有目標 CPU 架構二進制文件的單個 APK,而是??為每個 CPU 架構創建一個單獨的 APK 文件??。
?注意:Google Play 現在要求新應用必須使用 AAB(Android App Bundle)格式上傳,而不是 APK。??當上傳 AAB 時,Google Play 會自動針對每種設備配置生成并分發優化過的 APK 文件。
5.2 拆分應用二進制文件(Split Application Binary)
通過拆分應用程序,可減小初始安裝包體積。設備可先安裝輕量版應用,再單獨下載資源資產。
??若輸出為APK格式??:Unity會將應用程序拆分為??主APK??和??擴展文件(OBB)??。
在Publishing Settings中勾選Split Application Binary即可。
5.3 資源壓縮(Compression)
可修改 Unity 為應用程序資源文件選擇的壓縮方式。
- ?優勢??:減少應用程序包體體積;
- ?潛在影響??:若壓縮算法導致數據解壓耗時增加,可能延長加載時
5.4 代碼裁剪優化(Minification)??
通過 ??ProGuard 代碼裁剪優化??可顯著減小應用程序體積并提升運行時性能。
在Unity的Publishing Settings中?找到 ??Minify(壓縮)?? 下拉菜單按需勾選:
- Release:對發布版本啟用壓縮
- Debug:對調試版本啟用壓縮
- Both:同時啟用
?這東西主要是通過移除未使用的代碼來??縮減體積??,精簡字節碼結構,加速執行效率來優化性能。因此 ProGuard 可能??錯誤移除應用依賴的關鍵代碼??(如反射調用的類或 JNI 接口),還是存在??代碼誤刪風險??的,所以千萬在開啟代碼裁剪優化后要注意充分測試。??
若需規避特定代碼被移除,可以??通過proguard-user.txt
自定義混淆規則??.
?6 Android數字分發服務??:滿足各分發平臺(如Google Play)特定要求的操作指南。
目前主要就是講Google Play的一些要求。這里不展開~