Unity:构建失败,无法更新SDK

问题描述 投票:0回答:7

Unity最新更新2018.3
SDK 工具和平台根据 SDK Manager 进行更新。
尝试构建并运行 Android 构建设置。

更新 SDK 后,Unity 仍然要求我按软件内置的按钮来更新 SDK。执行此操作后,它告诉我:

无法更新SDK。请手动运行SDK Manager来制作 确保您拥有最新的工具集和所需的平台 安装。有关详细信息,请参阅控制台日志。

当我查看控制台时,它告诉我:

CommandInvokationFailure: Unable to update the SDK. Please run the SDK Manager manually to make sure you have the latest set of tools and the required platforms installed. 
C:\Program Files (x86)\Android\android-sdk\tempToolsDir\bin\sdkmanager.bat --sdk_root=C:\Program Files (x86)\Android\android-sdk tools platform-tools "build-tools;28.0.3"

stderr[
Error: Failed to find package Files
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
]
stdout[

]
exit code: 1
UnityEditor.Android.Command.WaitForProgramToRun (UnityEditor.Utils.Program p, UnityEditor.Android.Command+WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg) (at <e1c3953b4cf040ddb1400046b1c34897>:0)
UnityEditor.Android.Command.RunWithStdin (System.Diagnostics.ProcessStartInfo psi, System.String errorMsg, System.Collections.Generic.IEnumerable`1[T] input) (at <e1c3953b4cf040ddb1400046b1c34897>:0)
UnityEditor.Android.AndroidSDKTools.RunAndroidSdkTool (System.String toolName, System.String arguments, System.Boolean updateCommand, System.String errorMsg, System.String toolsDir) (at <e1c3953b4cf040ddb1400046b1c34897>:0)
UnityEditor.Android.AndroidSDKTools.UpdateSDK (UnityEditor.Android.AndroidJavaTools javaTools) (at <e1c3953b4cf040ddb1400046b1c34897>:0)
UnityEditor.Android.PostProcessor.Tasks.CheckAndroidSDK+SDKComponentDetector.Update (UnityEditor.Android.AndroidSDKTools sdkTools, UnityEditor.Android.AndroidJavaTools javaTools, System.Version minVersion, UnityEditor.Android.PostProcessor.ProgressHandler onProgress) (at <e1c3953b4cf040ddb1400046b1c34897>:0)
UnityEditor.Android.PostProcessor.Tasks.CheckAndroidSDK.EnsureSDKComponentVersion (UnityEditor.Android.AndroidJavaTools javaTools, System.Version minVersion, UnityEditor.Android.PostProcessor.Tasks.CheckAndroidSDK+SDKComponentDetector detector) (at <e1c3953b4cf040ddb1400046b1c34897>:0)
UnityEditor.Android.PostProcessor.Tasks.CheckAndroidSDK.Execute (UnityEditor.Android.PostProcessor.PostProcessorContext context) (at <e1c3953b4cf040ddb1400046b1c34897>:0)
UnityEditor.Android.PostProcessor.PostProcessRunner.RunAllTasks (UnityEditor.Android.PostProcessor.PostProcessorContext context) (at <e1c3953b4cf040ddb1400046b1c34897>:0)
UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr)

我已经手动更新了SDK,它也给了我一个错误。我用这个技巧修复了它:
Can't update ools - Android SDK Command Line Tools for Windows

无论如何,我用管理员运行Unity,我用管理员运行cmd进行手动更新,但它仍然无法构建。需要帮助,谢谢。

SCREENSHOT: Unity SDK Update for Android build

android unity-game-engine sdk android-sdk-tools android-sdk-manager
7个回答
6
投票

我在尝试更新我的 android sdk 时遇到了类似的问题,并通过手动运行 sdk 管理器来修复它。在我的 Unity 编辑器控制台中,它打印出一份很长的许可协议以及告诉我该怎么做的错误。

首先,如果不存在,请在 .android 文件夹中创建一个空的 repositories.cfg 文件。对我来说,该文件位于

C:\Users\myuser\.android

接下来,在命令提示符下运行 sdkmanager.bat(您的结果和路径可能会根据您的 Unity 版本而有所不同)。

"C:\Program Files\Unity\Hub\Editor\2019.2.13f1\Editor\Data\PlaybackEngines\AndroidPlayer\SDK\tools\bin\sdkmanager.bat"  "platforms;android-29"

然后我可以按 y 并接受许可证。


2
投票

我遇到了这个问题,并通过定义“JAVA_HOME”环境变量来修复它,这是 Unity 的 sdkmanager.bat 运行所必需的。此后,Unity 能够按照预期从 Unity 内部无缝安装。


1
投票

尝试将 Android SDK 安装到某个不需要管理员权限即可访问的文件夹中(例如

C:\SDKs\android-sdk
)。这对我有用。


1
投票

对我有用的是找到“sdkmanager.bat”文件夹,从那里启动具有管理员权限的命令提示符,然后输入以下命令:

.\sdkmanager "platform-tools" "platforms;android-29"

1
投票

Android 构建失败 [2019.3.6f1]:无法更新 SDK

CommandInvokationFailure:无法更新 SDK。请手动运行 SDK 管理器,以确保您安装了最新的工具集和所需的平台。 /Users/yogesh/Library/android-sdk/tempToolsDir in\sdkmanager.bat --sdk_root=/Users/yogesh/Library/Android/sdk 工具平台工具“build-tools;28.0.3”


0
投票

我解决了这个问题,方法是下载 Android SDK 工具,下载我想要的 SDK 版本,然后将该版本拖到 Unity 存储其 SDK 版本的位置(如果您已经下载过的话)。

我更改了 Android 的默认位置,但如果您找到文件夹,则版本位于平台下,您可以将所需的版本拖到:

"C:\ProgramFiles\Unity\Hub\Editor\2020.1.1f1\Editor\Data\PlaybackEngines\AndroidPlayer\SDK\platforms"

但该路径会根据您拥有的 Unity 版本以及 Unity 存储在哪个驱动器上而改变。确保在 Unity 编辑器中

"preferences>external tools"
下的
"Android SDK tools installed with Unity"
已打开 on。不管怎样,祝你好运,我花了几个小时才弄清楚这一点。


0
投票

超级简单的修复,无需运行外部工具来修复问题。 这似乎是由内部解析器无法解析带有空格的路径引起的问题,在我的例子中是文件夹“Program Files”,所以......

  1. 将 Unity 文件夹从“Program Files”移动到 C:\ root
  2. 将 unity Hub 更新到最新版本
  3. 在目录 C:\Unity 中找到要构建的 Unity 版本
  4. 打开项目,转到Assets->External Dependency Manager->Android Resolver->Settings,禁用除“使用项目设置”之外的所有内容
  5. 利润!!!
© www.soinside.com 2019 - 2024. All rights reserved.