找不到 Android SDK(Unity)

86

错误:

Invalid command android
UnityEditor.HostView:OnGUI()

命令调用失败:

Unable to list target platforms. Please make sure the android sdk path is correct. See the Console for more details. 
C:/Program Files/Java/jdk1.8.0_121\bin\java.exe -Xmx2048M -Dcom.android.sdkmanager.toolsdir="C:/Users/great/AppData/Local/Android/Sdk\tools" -Dfile.encoding=UTF8 -jar "C:\Program Files\Unity\Editor\Data\PlaybackEngines\AndroidPlayer/Tools\sdktools.jar" -

stderr[
Error:Invalid command android
]
stdout[

]
exit code: 64
UnityEditor.Android.Command.Run (System.Diagnostics.ProcessStartInfo psi, UnityEditor.Android.WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg)
UnityEditor.Android.AndroidSDKTools.RunCommandInternal (System.String javaExe, System.String sdkToolsDir, System.String[] sdkToolCommand, Int32 memoryMB, System.String workingdir, UnityEditor.Android.WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg)
UnityEditor.Android.AndroidSDKTools.RunCommandSafe (System.String javaExe, System.String sdkToolsDir, System.String[] sdkToolCommand, Int32 memoryMB, System.String workingdir, UnityEditor.Android.WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg)
UnityEditor.HostView:OnGUI()

构建播放器时出错:

CommandInvokationFailure: Unable to list target platforms. Please make sure the android sdk path is correct. See the Console for more details. 
C:/Program Files/Java/jdk1.8.0_121\bin\java.exe -Xmx2048M -Dcom.android.sdkmanager.toolsdir="C:/Users/great/AppData/Local/Android/Sdk\tools" -Dfile.encoding=UTF8 -jar "C:\Program Files\Unity\Editor\Data\PlaybackEngines\AndroidPlayer/Tools\sdktools.jar" -

stderr[
Error:Invalid command android
]
stdout[

]
exit code: 64

截图:

屏幕截图


1
试试这个,看看是否有帮助... - Programmer
我在使用Unity 2017.0.2f和sdk 25.2.5的时候没有遇到任何问题,但当我安装了Unity 2017.0.3f之后,突然什么都不好使了! - Ghasem
一年后,问题仍然存在。奇怪的是错误提示说:“CommandInvokationFailure: 无法列出目标平台,请确保 Android SDK 路径正确。 C:/Users/Francois/AppData/Local/Android/Sdk\tools\bin\avdmanager.bat list target -c”如果我运行这个确切的命令,我会得到一个目标平台列表。所以除了路径中的 \ 和 / 混乱之外,该命令是有效的。 - FMaz008
11个回答

198

我遇到了同样的问题。

我通过降低 Android SDK 工具版本来解决它。

以下是具体步骤:

  1. 删除 Android SDK 中的 "tools" 文件夹: [你的 Android SDK 根目录]/tools -> tools

  2. 下载 SDK 工具: http://dl-ssl.google.com/android/repository/tools_r25.2.5-windows.zip

  3. 将其解压到 Android SDK 根目录中

  4. 构建您的项目


20
针对 MacOS :在终端中输入以下命令: cd $ANDROID_HOME; rm -rf tools; wget http://dl-ssl.google.com/android/repository/tools_r25.2.5-macosx.zip; unzip tools_r25.2.5-macosx.zip,该命令的作用是删除 $ANDROID_HOME 目录下的 tools 文件夹,并重新下载并解压名为 tools_r25.2.5-macosx.zip 的文件。 - electronix384128
@Noah Cristino,你升级到Unity 5.6.1后问题没有解决吗? - jkasten
没有,它没有解决问题,答案才是解决方案。 - Noah Cristino
没有,答案修复了它。 - Noah Cristino
4
在此之后,我仍然遇到了问题。显然JDK 1.9.0存在问题。安装1.8.0版本适用于我。以下是适用于我的组合:Unity 2017.2.0f3 Android SDK 26 Android SDK工具25.2.5 JDK 1.8.0_151 - justinl
显示剩余8条评论

34

问题是由于Unity与最新的Android构建工具不兼容。对于MacOS,以下一行命令可以让它正常工作:

cd $ANDROID_HOME; rm -rf tools; wget http://dl-ssl.google.com/android/repository/tools_r25.2.5-ma‌​cosx.zip; unzip tools_r25.2.5-macosx.zip

http://mirrors.neusoft.edu.cn/android/repository/tools_r25.2.5-macosx.zip 这个链接对我有效。 - Noor Ali Butt
奇怪的是,我用wget无法访问那个链接(一直显示404错误),但当我在浏览器中打开它时,就像我预期的那样开始下载了。 - livingtech
1
@livingtech 不幸的是,这是因为当您从SO复制它时,URL中有一个空格。 - electronix384128
1
完美的声音,但必须先安装Homebrew和wget!另一种方法是下载zip文件并手动解压缩! - BSQ
如果您没有wget,可以使用cd $ANDROID_HOME; rm -rf tools; curl http://dl-ssl.google.com/android/repository/tools_r25.2.5-ma‌​cosx.zip > tools_r25.2.5-ma‌​cosx.zip; unzip tools_r25.2.5-macosx.zip - Kirk Boyer

13

1- 打开 https://developer.android.com/studio/index.html

2- 滚动到页面底部

3- 下载适用于您操作系统的最新工具版本(例如 tools_r25.2.3-windows.zip)

4- 解压缩该文件

5- 从之前的Android SDK文件夹中删除tools文件夹

6- 将新的tools文件夹复制到Android SDK文件夹中,就像这张图片中的一样:

进入图像描述


我已经尝试下载并按照您的步骤操作,但仍然存在问题! - Mago Nicolas Palacios

6

Unity 5.6.1 / 2017.1修复了与Android SDK Tools 25.3.1+兼容性的问题。这一问题已在Unity bug跟踪器中记录,具体详情请参见issue 888859和他们的5.6.1版本发布说明


8
Unity 2017.2 又出了问题。 - Paul Du Bois
1
我使用的是2017.3.1版本,我遇到了这个问题。 - FMaz008
我正在使用2018.2.1版本,但仍然遇到相同的问题。 - user8215153

6

这些是最终适用于我的步骤...

  • 安装JDK jdk1.8.0_131(是的,这个特定版本,而不是更高版本),并将其设置为Unity中的JDK路径。

  • 删除android sdk工具文件夹:[android_sdk_root]/tools

  • http://dl-ssl.google.com/android/repository/tools_r25.2.5-windows.zip下载SDK Tools v25.2.5(这个特定版本)

  • 将该存档中的tools文件夹提取到Android SDK根目录中

  • 构建您的项目


这不是关于安装JDK jdk1.8.0_131(特定版本),我使用jdk1.8.0_151也可以正常工作。问题在于仓库工具,就像你所写的那样(只有那一个)。 - Olivier Pons

6

5
更简单的解决方法是:设置环境变量USE_SDK_WRAPPER=1,或者修改tools/android.bat文件,在其中添加“set USE_SDK_WRAPPER=1”这一行。这样可以防止android.bat弹出“y/n”提示,这就是让Unity混淆的原因。

1
@paul-du-bois 刚刚遇到了与Unity的2018.1x和2018.2x版本相同的问题,通过在默认的"android.bat"文件中添加包装行解决了这个问题。谢谢! - asethi

5
  1. 删除 Android SDK 中的 "tools" 文件夹 : [你的 Android SDK 根目录]/tools -> tools

  2. 下载 SDK 工具:http://dl-ssl.google.com/android/repository/tools_r25.2.5-windows.zip

  3. 将其解压到 Android SDK 根目录

  4. 构建你的项目

之后对我来说还不起作用,我必须执行以下操作:

  1. 前往 Java 存档 (http://www.oracle.com/technetwork/java/javase/downloads/java-archive-javase8-2177648.html)

  2. 搜索 jdk-8u131 版本。

  3. 接受许可协议,创建一个账户并下载该版本。

  4. 安装它,并在 Unity 中将其定义为 JDK 路径。

来源: https://www.reddit.com/r/Unity3D/comments/77azfb/i_cant_get_unity_to_build_run_my_game/


1
谢谢你,你救了我:o 2018年12月4日,但这仍然不起作用。 - sliders_alpha

2

我通过卸载JDK 9解决了这个问题。


这实际上非常相关 - 出于某种原因,Unity正在检测最新的JDK,因此即使设置正确的路径也无法正常工作 - 超过8的更新JDK必须卸载。 - Evan Knowles
对我来说,通过将JAVA_HOME和ANDROID_HOME添加到系统变量中,并使用最新的JDK和Android Build Tools,它可以正常工作。设置ANDROID_HOME=C:\安装位置\android-sdk设置PATH=%PATH%;%ANDROID_HOME%\tools;%ANDROID_HOME%\platform-tools - asethi

1
在我的情况下,我试图构建并获取一个旧的Unity 3D项目的APK(以便我可以在我的Android手机上玩游戏)。我使用了最新的Android Studio版本,并通过Android Studio中的SDK Manager下载了所有可用的SDK包。SDK包位于C:/Users/Onat/AppData/Local/Android/Sdk,而我收到的错误消息与JDK(Java开发工具包)版本“jdk-12.0.2”有关。JDK位于C:\Program Files\Java\jdk-12.0.2,而Windows环境变量为JAVA_HOME:C:\Program Files\Java\jdk-12.0.2。
经过3个小时的研究,我发现Unity不支持JDK 10,正如https://forum.unity.com/threads/gradle-build-failed-error-could-not-determine-java-version-from-10-0-1.532169/所述。我的建议是:

1. 如果您已经安装了不需要的JDK,请卸载它。https://www.java.com/tr/download/help/uninstall_java.xml

2. 前往http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

3. 如果尚未登录,请登录或打开Oracle帐户。

4. 下载适用于您的计算机设置(32位/64位,Windows / Linux等)的旧版但功能齐全的JDK 8。

5. 安装JDK。请记住安装路径。(https://docs.oracle.com/cd/E19182-01/820-7851/inst_cli_jdk_javahome_t/)

6.如果您使用的是Windows系统,请打开环境变量并通过右键单击“我的电脑/此电脑”>“属性”>“高级系统设置”>“环境变量”>“新建”>“变量名:JAVA_HOME”>“变量值:[您的JDK路径,我的是“C:\Program Files\Java\jdk1.8.0_221”]”来更改Java路径。

7.在Unity 3D中,按“编辑”>“首选项”>“外部工具”,并填写JDK路径(我的是“C:\Program Files\Java\jdk1.8.0_221”)。

8.同样,在同一弹出窗口中,编辑SDK路径。(从Android Studio> SDK Manager> Android SDK> Android SDK位置获取。)

9.如有需要,请重新启动计算机以使更改生效。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接