Android sdkmanager 工具未找到。

42

enter image description here我本周开始使用Ubuntu 18.0 LTS,从Windows切换过来,并希望重新安装Android Studio和Flutter。我按照安装Android Studio的步骤进行了操作,并且它与所有SDK都可以正常工作。然而,当我想要安装Flutter时,出现了异常:

Doctor summary (to see all details, run flutter doctor -v):
Unhandled exception:
Exception: Android sdkmanager tool not found (/usr/lib/android-sdk/tools/bin/sdkmanager).
Try re-installing or updating your Android SDK,
visit https://flutter.io/setup/#android-setup for detailed instructions.

如果需要,可以请求堆栈跟踪。

我找到的最接近的问题是:如何在Linux Ubuntu 16.04上安装SDK管理器?,但我真的不太理解如何操作这些说明。也许你需要提供非常清晰的说明,因为我对Linux平台还很陌生。

tools/package.xml :

<ns2:repository xmlns:ns2="http://schemas.android.com/repository/android/common/01"
            xmlns:ns3="http://schemas.android.com/sdk/android/repo/addon2/01"
            xmlns:ns4="http://schemas.android.com/sdk/android/repo/sys-img2/01"
            xmlns:ns5="http://schemas.android.com/repository/android/generic/01"
            xmlns:ns6="http://schemas.android.com/sdk/android/repo/repository2/01">
      <license id="apache-2.0" type="text">Please refer to Apache v2.0 license</license>
  <localPackage path="tools" obsolete="false">
<type-details xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:type="ns5:genericDetailsType"/>
<revision>
  <major>25</major>
  <minor>0</minor>
  <micro>0</micro>
</revision>
<display-name>Android SDK Tools</display-name>
<uses-license ref="apache-2.0"/>
<dependencies>
  <dependency path="platform-tools">
    <min-revision>
      <major>20</major>
    </min-revision>
  </dependency>
</dependencies>
  </localPackage>
 </ns2:repository>

Flutter doctor -v 输出:

[✓] Flutter (Channel beta, v0.7.3, on Linux, locale en_IN)
• Flutter version 0.7.3 at /home/andi/Downloads/flutter
• Framework revision 3b309bda07 (13 days ago), 2018-08-28 12:39:24 -0700
• Engine revision af42b6dc95
• Dart version 2.1.0-dev.1.0.flutter-ccb16f7282

[!] Android toolchain - develop for Android devices (Android SDK 28.0.2)
• Android SDK at /home/andi/Android/Sdk
• Android NDK location not configured (optional; useful for native profiling support)
• Platform android-28, build-tools 28.0.2
• ANDROID_HOME = /home/andi/Android/Sdk
• Java binary at: /home/andi/Downloads/android-studio-ide-173.4907809-linux/android-studio/jre/bin/java
• Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1024-b01)
! Some Android licenses not accepted.  To resolve this, run: flutter doctor --android-licenses

[✓] Android Studio (version 3.1)
• Android Studio at /home/andi/Downloads/android-studio-ide-173.4907809-linux/android-studio
• Flutter plugin version 28.0.1
• Dart plugin version 173.4700
• Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1024-b01)

[!] Connected devices
! No devices available

! Doctor found issues in 2 categories.
9个回答

87

在我的Kubuntu上安装后,我遇到了这个问题。

你需要打开AndroidStudio,然后进入工具 -> SDK管理器,然后进入SDK工具选项卡,取消选中 隐藏已过时的软件包 选项。

您将看到 Android SDK工具(已过时) 的选项,请勾选该选项并继续下载和安装过程。

在这里查看截图


2
我下载了android-studio-ide-192.6241897-linux.tar.gz和flutter_linux_v1.12.13+hotfix.8-stable.tar.xz。我认为这是Android Studio的一个bug。 - zmofsx
已在Linux Mint 19上解决!! - Nikhil
已在Ubuntu 20中解决。 - Sergio Rinaudo
2
已在MacOS Catalina中解决。谢谢。 - Mahesh Kavathiya
1
已在MacOS Big Sur中解决。谢谢! - aiherrera
显示剩余3条评论

13

我正在使用Manjaro Linux操作系统。在设置了ANDROID_HOME环境变量并从Android Studio安装了最新版的Android SDK命令行工具后,运行了以下命令:

flutter doctor --android-licenses

$ mkdir ~/Android/Sdk/tools/bin

并创建了指向真实路径的链接

$ ln -s ~/Android/Sdk/cmdline-tools/latest/bin/sdkmanager ~/Android/Sdk/tools/bin/sdkmanager

再次运行并接受全部

$ flutter doctor --android-licenses

flutter doctor


这可能应该成为被接受的答案,因为它使用最新的SDK工具而不是安装旧版本。 - Marcelo
1
这是更好和正确的答案。你也不需要再创建符号链接了。Flutter会自动在cmdline-tools下找到sdkmanager。 - Sajib Acharya

9

如果您在接受SDK许可证时遇到此错误。

➜  ~ flutter doctor --android-licenses
Android sdkmanager not found. Update to the latest Android SDK and ensure that the cmdline-tools are installed
to resolve this

最初的Android SDK结构如下:

android-sdk
├── build-tools
│   ├── 29.0.3 -> debian
│   └── debian
│       └── lib
├── cmdline-tools
│   ├── tools
│   │   ├── bin

我能够配置Android许可证的方法是通过更改android-sdk目录结构,将“tools”更改为“latest”。

android-sdk
├── build-tools
│   ├── 29.0.3 -> debian
│   └── debian
│       └── lib
├── cmdline-tools
│   ├── latest
│   │   ├── bin
|   |   |  

7
为了解决Android sdkmanager未找到的警告:
  1. 打开Android Studio
  2. 从顶部工具栏选择 Tools > SDK Manager.
  3. 选择带有蓝色下划线的SDK Tools选项卡
  4. 取消勾选“隐藏过时的包”。
  5. 选中Android SDK命令行工具(最新版)

enter image description here 6. 点击确定

Android Studio Electric Eel的屏幕截图。


4

我在Ubuntu安装时遇到了这个问题。为了让Flutter正常工作,您需要设置环境变量ANDROID_HOME为Android SDK的安装路径。

假设您将SDK安装在主目录中,打开终端并输入以下命令:

export ANDROID_HOME=$HOME/Android/Sdk

ANDROID_HOME=~/Android-SDK flutter doctor

如果那个方法起作用了,那么就把这个环境变量添加到你的配置文件中,使其持久化存储。具体操作是在文件中添加以下内容:
export ANDROID_HOME=~/Android-SDK

将以下内容添加到您的~/.profile脚本中,然后重新登录Ubuntu。

显然,如果您在不同的目录中安装了android sdk,则只需用该目录替换~/即可。例如,如果您将sdk安装到/opt,则命令将是 ANDROID_HOME=/opt/Android-SDK flutter doctor

检查我的android sdk + flutter设置后,我还将以下内容添加到我的路径中

~/Android-SDK/platform-tools

您可以在不影响您的个人资料之前测试此功能,方法是在终端中执行以下命令。
PATH=$PATH:~/Android-SDK/platform-tools ANDROID_HOME=~/Android-SDK flutter doctor

再次将~/Android-SDK更改为您安装android SDK的位置。 如果它有效,请相应地更改您的配置文件并重新登录Ubuntu。


1
不,第一条命令没有起作用。如果有帮助的话,我按照 https://dev59.com/y18d5IYBdhLWcg3w8WBt 的步骤设置了变量。 - Aditya Nigam
@AdityaNigam 我发现将Flutter与Android SDK配合使用很麻烦,而我在Linux方面有经验,所以不要绝望。我在我的答案中添加了一些新内容,请试一试。 - nobody special
@AdityaNigam 看起来你在另一个链接中遵循的那些指示告诉你将导出放在.bashrc中,这没问题,但只会影响bash cli shell,所以如果你从cli运行sdk,那么就好了。但如果你从gui运行,可能会遇到问题,而.profile脚本为其他shell设置环境,因此我建议(就像我一样)在你的.profile脚本中设置你的环境。 - nobody special
@AdityaNigam 只要你设置环境指向它,你的Flutter可以在任何地方,而且你的flutter doctor命令正在运行表明你已经完成了设置,所以就让它保持原样吧。我在我的.profile脚本中设置Android相关的只有export PATH="$HOME/Android-SDK/platform-tools":$HOME/android-studio/bin:"$PATH"export ANDROID_HOME=$HOME/Android-SDK。虽然这是很久之前的事情了,但我记得我只需要做这些。我停止使用flutter,转而使用纯java sdk,所以我猜可能会有一些变化。 - nobody special
请记住,在更改.profile文件后,您必须注销并重新登录Ubuntu才能使更改生效。 - nobody special
显示剩余2条评论

1
“我总是感到困惑,为什么安装包不应该包含所有必要的依赖关系,而是给很多人带来麻烦(也许是乐趣)?”
“无论如何,我想在zmofsx solution上添加一些内容,因为对我来说,解决方案并没有完全解决问题,我还需要执行以下几个步骤。”
“希望这些可以帮助某些人进行故障排除。”
“所以,在描述的步骤以上之后,我在控制台中执行了以下操作:”
flutter doctor --android-licenses

按Y键显示所有许可证,再依次对每个许可证按Y键。然后...
flutter doctor

这是我的控制台输出:
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 3.0.5, on Ubuntu 20.04.4 LTS 5.4.0-122-generic, locale en_GB.UTF-8)
[✓] Android toolchain - develop for Android devices (Android SDK version 33.0.0)
[✓] Chrome - develop for the web
[✓] Linux toolchain - develop for Linux desktop
[✓] Android Studio (version 2021.2)
[✓] Android Studio
[✓] VS Code (version 1.69.2)
[✓] Connected device (2 available)
[✓] HTTP Host Availability

• No issues found!

然后测试结果:
mkdir flutter_example
cd flutter_example
flutter create .
flutter run -d linux

并使该应用程序运行起来: 在此输入图像描述

1

对于那些使用 pop_os 22 并已使用 flatpak 安装了 Android Studio 的人来说,问题在于 Android Studio 是隔离的,因此您需要配置 android-sdk 和 android-studio-dir 的路径。

flutter config --android-sdk ~/Android/Sdk
flutter config -android-studio-dir path/android-studio

如果你从商店安装的pop_os,你会在这里找到它:/home//.local/share/flatpak/app/com.google.AndroidStudio/current/active/files/extra/android-studio

然后你需要运行 flutter doctor --android-licenses 并接受所有许可证,这样 flutter doctor 就不会显示错误了。


0
使用Flutter中的配置工具。
flutter config --android-sdk ~/Android/Sdk/
flutter config --android-studio-dir ~/android-studio/

接受协议后 flutter doctor --android-licenses


0
重新安装Android Studio可以解决这个问题。

你的回答可以通过提供更多的支持性信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的回答是否正确。你可以在帮助中心找到有关如何撰写好回答的更多信息。 - undefined

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