我遇到了一个奇怪的 Unity 6.x Android SDK 问题,并设法找到了一个可复现的解决方式。

我使用的环境:

  • Unity 6000.6.0f1
  • Windows
  • Unity 自带的 Android SDK
  • 命令行工具 16.0
  • Android API 37
  • AGP 9.0.0
  • Gradle 9.1.0

Unity 成功下载了 API 37,但 SDK 最终变成了:

platforms\android-37.0
platforms\android-37.0-2

sdkmanager 随后报告:

观察到包 ID 'platforms;android-37.0'
位于不一致的位置
'...\platforms\android-37.0-2'

(预期位置为 '...\platforms\android-37.0')

Gradle 随后构建失败,提示:

未找到哈希字符串为 'android-37' 的目标

奇怪的是,Unity 似乎显示 API 37 已成功安装。

解决方法

我关闭了 Unity,删除了这两个文件夹:

android-37.0
android-37.0-2

然后手动运行:

sdkmanager.bat "platforms;android-37.0"

之后:

platforms;android-37.0 → platforms\android-37.0

没有出现不一致位置的警告,并且 Unity 构建成功

因此,这似乎是 SDK 平台安装不一致/重复导致的问题,而非项目或 Gradle 配置的问题。

有人遇到过 Unity 6.x 下出现 android-37.0-2 目录的情况吗?