未找到 Android sdkmanager 工具

Posted

技术标签:

【中文标题】未找到 Android sdkmanager 工具【英文标题】:Android sdkmanager tool not found 【发布时间】:2019-02-14 19:35:10 【问题描述】:

我这周刚开始使用 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.

如果需要,请询问堆栈跟踪。

我能找到的最接近的问题是:How to install SDK manager on linux ubuntu 16.04?,但我无法真正理解如何操作这些说明。我可能需要您在说明中非常清楚,因为我是 linux 平台的新手。

工具/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.

【问题讨论】:

【参考方案1】:

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

您需要打开 AndroidStudio 然后转到 Tools -> SDK Manager 然后转到 SDK Tools 选项卡,取消选中选项Hide Obsolete Packages

您将看到 Android SDK Tools (Obsolete) 选项,选中该选项并继续下载和安装过程。

【讨论】:

我下载了android-studio-ide-192.6241897-linux.tar.gz和flutter_linux_v1.12.13+hotfix.8-stable.tar.xz。我认为这是 Android Studio 的一个错误。 这对我有用。非常感谢;我正准备放弃使用 Ubuntu 的 Flutter。 已在 Linux Mint 19 上解决!! 已在 MacOs Catalina 中解决。。谢谢 已在 MacOs Big Sur 中解决。谢谢!【参考方案2】:

我正在使用 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 工具而不是安装旧版本。 这是更好更正确的答案。您也不再需要创建符号链接。 Flutter 自动找到cmdline-tools 下的sdkmanager。【参考方案3】:

我在 Ubuntu 上安装时遇到了这个问题。您需要将环境变量 ANDROID_HOME 设置为您安装 android sdk 的路径才能使 Flutter 正常工作。

因此,假设您在主目录中安装了 SDK,请打开终端并发出此命令

ANDROID_HOME=~/Android-SDK flutter doctor

如果可行,则将 env 变量添加到您的配置文件以使其持久化,方法是添加

export ANDROID_HOME=~/Android-SDK

到您的 ~/.profile 脚本,然后重新登录到 Ubuntu。

显然,如果您将 android sdk 安装在不同的目录中,您只需将 ~/ 替换为该目录,例如,如果您将 sdk 安装到 /opt,那么命令将是 ANDROID_HOME=/opt/Android-SDK 扑医生

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

~/Android-SDK/platform-tools

您可以在弄乱您的个人资料之前通过终端中的以下命令进行测试

PATH=$PATH:~/Android-SDK/platform-tools ANDROID_HOME=~/Android-SDK flutter doctor

再次将 ~/Android-SDK 更改为您安装 android SDK 的位置。如果可行,请相应地更改您的个人资料并重新登录 Ubuntu。

【讨论】:

不,第一个命令不起作用。如果有帮助,我按照***.com/questions/26256279/… 设置变量。 @AdityaNigam 我发现设置颤振可以很好地与 android sdk a pita 配合使用,而且我对 linux 有经验,所以不要绝望。我在答案中添加了一些新内容,请尝试一下。 @AdityaNigam 看起来您在其他链接中遵循的那些说明告诉您将导出放在 .bashrc 中,这没问题,但只会影响 bash cli shell,所以如果您从cli,不错。但是如果你从 gui 运行,你可能会发现问题,而 .profile 脚本为其他 shell 设置环境,所以我会(就像我一样)建议在你的 .profile 脚本中设置你的环境。 所以我做了 gedit ~/.profile 并最后添加了 export ANDROID_HOME="/usr/lib/android-sdk/" 。另外,你想让我把flutter sdk文件夹放到同一个位置吗?因为它仍然说 flutter: command not found @AdityaNigam 只要您将环境设置为指向它,您的颤动就可以在任何地方,并且您的颤动医生命令正在运行这一事实表明您有,所以保持原样。我在 .profile 脚本中设置的关于 android 的唯一内容是 export PATH="$HOME/Android-SDK/platform-tools":$HOME/android-studio/bin:"$PATH"export ANDROID_HOME=$HOME/Android-SDK,虽然这是很久以前的事了,但我记得这就是我必须要做的。我停止使用颤振,更喜欢普通的 java sdk,所以我猜事情可能已经改变了。【参考方案4】:

如果您在接受 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 目录的结构

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

【讨论】:

以上是关于未找到 Android sdkmanager 工具的主要内容,如果未能解决你的问题,请参考以下文章

mac android studio怎么更新sdk manager

Sdkmanager“错误:无法在 Windows 上找到或加载主类 com.android.sdklib.tool.sdkmanager.SdkManagerCli”

返回的工具/android 找不到 sdkmanager.jar

Android 命令行工具 sdkmanager 总是显示:警告:无法创建设置

sh Android - 安装依赖项,使用sdkmanager / android终端工具在linux / ci / other上构建android项目

sh Android - 安装依赖项,使用sdkmanager / android终端工具在linux / ci / other上构建android项目