Unity —— Android 应用构建与发布
文章目录
- 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的一些要求。这里不展开~