要为 Android 创建 Unity 应用程序,首先需要设置支持 Android 的 Unity 项目。为了支持 Android,Unity 项目需要以下依赖项:
在开始之前,请查看 Unity 的 Android 要求和兼容性文档,确保您了解为 Android 开发 Unity 应用程序时需要遵守的任何限制。
Unity 将依赖项作为模块分发,这意味着必须使用 Unity Hub 来安装它们。可以在安装新的 Unity 编辑器版本时安装它们,也可以将它们添加到现有的 Unity 编辑器安装中。要安装模块:
要安装的三个模块是:
Unity 分别在 /[EditorVersion]/Editor/Data/PlaybackEngines/AndroidPlayer/ 下的 SDK、NDK 和 OpenJDK 文件夹中安装 Android SDK & NDK 工具 和 OpenJDK。
应当使用 Unity Hub 来安装 Android SDK & NDK 工具 和 OpenJDK,以确保获得正确的版本和配置。但是,在某些情况下,更改 Unity 用于构建 Android 应用程序的 SDK、NDK 或 JDK 很有用。例如,如果有多个具有相同依赖项的 Unity 版本,并且不想重复安装 SDK、NDK 和 JDK,则可以指定共享位置。
要让 Unity 使用自定义版本的依赖项:
本节包含每个 Unity 版本支持的每个依赖项的版本信息。Unity 的每个版本都需要特定版本的 Android NDK 和 Android JDK,但对 Android SDK 的版本没有确切要求。
Unity 依赖于 Android SDK 提供的工具,不同版本的 SDK 通常具有相同的工具。这意味着您可以使用任何最新版本的 SDK,因为它们都包含 Unity 所需的构建工具。
下表显示了随每个 Unity 版本一起安装的 Android SDK 工具的支持版本:
| Unity 版本 | SDK 工具版本 | SDK 构建工具版本 | SDK 命令行工具版本 | SDK 平台工具版本 |
|---|---|---|---|---|
| 6000.0 | 26.1.1 | 34.0.0 | 6 | 34.0.5 |
| 2022.3 LTS | 26.1.1 | 32.0.0 | 6 | 32.0.0 |
| 2021.3 LTS | 26.1.1 | 32.0.0 | 6 | 32.0.0 |
| 2020.3 LTS | 26.1.1 | 30.0.2 | 2 | 28.0.1 |
重要信息:Unity 2020.3 和 2021.3 LTS 版本不支持 Android SDK 31 版本及更高版本。
下表显示了每个 Unity 版本支持的 NDK 版本:
| Unity 版本 | NDK 版本 |
|---|---|
| 6000.0 | r23b (23.1.7779620) |
| 2022.3 LTS | r23b (23.1.7779620) |
| 2021.3 LTS | r21d (21.3.6528147) |
| 2020.3 LTS | r19 (19.0.5232133) |
下表显示了每个 Unity 版本支持的 JDK 版本:
| Unity 版本 | JDK 版本 |
|---|---|
| 6000.0 | 17(OpenJDK 17 版) |
| 2022.3 LTS | 11(OpenJDK 11 版) |
| 2021.3 LTS | 11(OpenJDK 11 版) |
| 2020.3 LTS | 8(OpenJDK 1.8 版) |
注意:只有 Unity 2023.2 版支持 CMake 3.22.1 版。Unity 2022.3 及更低版本不支持 CMake。
Android 的外部工具部分可用于配置 Android 开发工具的设置(这些工具用于在 Android 设备上设置 Unity 项目)。要访问 Android 的外部工具部分,请选择编辑 (Edit) > 偏好 (Preferences)(macOS:Unity > 设置 (Settings)),然后导航到外部工具 (External Tools) > Android。
有关常规偏好设置,请参阅偏好。
| 设置 | 描述 |
|---|---|
| JDK installed with Unity(recommended) | 指示是使用随 Unity 一起安装的 Java 开发工具包 (JDK) 的推荐版本,还是使用自定义 JDK 安装版本。如果启用,该设置将显示 JDK 安装文件夹的路径。要使用自定义 JDK 版本,请禁用此选项,然后单击浏览 (Browse) 以设置自定义 JDK 安装文件夹路径。 |
| Android SDK tools installed with Unity(recommended) | 指示是使用随 Unity 一起安装的 Android SDK 工具的推荐版本,还是使用自定义 SDK 工具安装版本。如果启用,该设置将显示 SDK Tools 安装文件夹的路径。要使用自定义 SDK 工具版本,请禁用此选项,然后单击浏览 (Browse) 以设置自定义 SDK 工具安装文件夹的路径。 |
| Android NDK installed with Unity(recommended) | 指示是使用随 Unity 一起安装的 Android 原生开发工具包 (NDK) 的推荐版本,还是使用自定义 NDK 安装版本。如果启用,该设置将显示 NDK 安装文件夹的路径。要使用自定义 NDK 版本,请禁用此选项,然后单击浏览 (Browse) 以设置自定义 NDK 安装文件夹的路径。 |
| Gradle installed with Unity(recommended) | 指示是使用随 Unity 安装的推荐 Android__ Gradle__一套 Android 构建系统,可自动执行多种构建过程。这种自动化意味着能减少许多常见的构建错误。更多信息 See in Glossary 版本还是使用自定义 Gradle 安装版本。如果启用,该设置将显示 Gradle 安装文件夹的路径。要使用自定义 Gradle 版本,请禁用此选项,然后单击浏览 (Browse) 以设置自定义 Gradle 安装文件夹的路径。 |
| Stop Gradle daemons on exit | 指示 Unity 编辑器退出时是否停止 Gradle 守护进程。此选项默认启用,可能有助于释放计算机上的资源。 |
| Kill__ ADB__Android 调试桥 (Android Debug Bridge, ADB)。可以在构建后使用 ADB 来手动部署 Android 包 (APK)。更多信息 See in Glossary server on exit |
指示 Unity 编辑器退出时是否让 Android 调试桥 (adb) 服务器停止。此选项默认启用,可能有助于释放计算机上的资源。 |
| Kill external ADB instances | 指示是否让外部 Android 调试桥 (ADB) 实例停止。这些单独实例不属于从 Android SDK tools installed with Unity(recommended) 设置的 Android SDK 集。多个 ADB 实例可能会相互冲突,并可能导致使用 Android SDK 时出现问题。例如,在更新 API 时或应用程序启动时。 注意:默认情况下会启用此选项,以防止不同 ADB 实例之间的冲突。 |
| Maximum JVM heap size, Mbyte | 指定在 Android 构建过程中可以分配的最大 Java 堆大小。该值以兆字节 (MB) 为单位指定,默认值为 4096。您可以根据项目要求增加或减少此值。如果遇到堆空间错误,请增大此值。 |
| Keystores Dedicated Location | 指定 Android 密钥库的文件夹路径。Unity 在构建过程中签署 Android 应用程序时使用此路径。要为应用程序设置新路径,请单击浏览 (Browse) 并导航到要存储 Android 密钥库的文件夹。有关更多信息,请参阅选择密钥库位置。 |
Unity Hub 安装了 Google Play 所需的最新版本的 Android SDK Target API。如果需要使用较新版本,可在 Android 播放器设置 (Android Player Settings) 中进行更改。为此需要执行以下操作:
如果选择的目标 API 版本比最新安装的版本更新,Unity Android SDK Updater 可以自动下载并安装新版本。Unity 会显示提示,您可以从中选择:
如果选择的目标 API 版本未安装且早于最新安装的版本,Unity Android SDK Updater 将无法执行更新,并且 Unity 会显示错误消息。在这种情况下,要更新 Android SDK 目标 API,必须使用 Android Studio 或命令行工具中的 Android sdkmanager。无论选择哪种方法,请确保在编辑 (Edit) > 偏好 (Preferences) > 外部工具 (External Tools) 窗口中为 Unity 选择正确的 Android SDK 文件夹。有关更多信息,请参阅自定义依赖项。
重要信息:在 Windows 上,如果 Unity 编辑器安装在默认文件夹 (/Program Files/) 中,您必须以更高的权限(以管理员身份运行)运行 sdkmanager 才能执行更新。