Android Studio的安装没有sdkmanager

时间:2020-02-28 23:13:44

标签: java android-studio flutter android-sdk-manager

我一直在使用针对iOS设备的macOS 10.15.3在Flutter中进行编程。今天,我也尝试安装Android Studio,以进行扩展。安装过程没有错误,但是在Library/Android/sdk/中没有tools子目录,这是一个问题,因为应该在sdkmanager中找到Library/Android/sdk/tools/bin

我注意到了这一点,因为运行flutter doctor给了我

    ✗ Android license status unknown.
      Try re-installing or updating your Android SDK Manager.
      See https://developer.android.com/studio/#downloads or visit https://flutter.dev/setup/#android-setup for detailed instructions.

我尝试重新安装Android Studio(没有区别)。在线发布的其他解决方案都讨论Java版本,因此我将JRE从1.7升级到1.8,并尝试重新安装Android Studio(没有区别),然后将JDK升级到最新版本(因此Java版本为11.0.6)并尝试安装再次使用Android Studio(没有区别)。在上述过程中,我还将Flutter升级到了v1.12.13 + hotfix.8,但是这个错误不会消失。

如果我输入flutter doctor --android-licenses,则会得到:

    Android sdkmanager tool not found (/Users/macuser/Library/Android/sdk/tools/bin/sdkmanager).
    Try re-installing or updating your Android SDK,
    visit https://flutter.dev/setup/#android-setup for detailed instructions.

这是我第一次注意到我缺少Android Studio部分的方式。

我尝试通过自己创建一个tools/bin子目录然后将sdkmanager从插件的Library/Android/sdk/cmdline-tools/latest/bin复制到我的新Library/Android/sdk/tools/bin来作弊。但是,这并没有愚弄Flutter。运行flutter doctor --android-licenses导致:

A newer version of the Android SDK is required. To update, run:
/Users/macuser/Library/Android/sdk/tools/bin/sdkmanager --update

这是错误的,因为Android SDK是最新的。

有人知道为什么Android Studio会始终缺少tools/bin子目录和其中的好东西吗?感谢和抱歉,如果我忽略了一些基本知识。

4 个答案:

答案 0 :(得分:38)

更新1(2020-02-29)

似乎最新版本的Android SDK将“ Android SDK工具”包重命名为“ Android-SDK命令行工具”。 但是很遗憾,当前的Flutter SDK稳定版本(v1.12.13+hotfix.8)与此更改不兼容,并且一直显示错误消息。

image description

解决方法:

按照@Mark Ebden的建议,您只需在 SDK工具页上取消选中隐藏过时的软件包复选框,就会看到 Android SDK工具(已过时) 26.1.1 。安装它,就可以了。如果发现缺少任何内容,请阅读以下详细说明。

有关更多信息,请参见关于{@ 3}的flutter存储库问题。


这是在使用最新版本的Mac OS安装android studio时所需的完整详细信息。

1。安装Android Studio稳定版。

2。打开android studio

3。打开SDK管理器。请参见下面的屏幕截图。

this

4。确保您已下载所有必需的内容。请参见下面的屏幕截图。

enter image description here

enter image description here

请注意,我正在为我的Android SDK使用自定义位置( / Users / darish / development / sdk / android ),而不是默认位置(Library / Android / sdk /)< / p>

5。转到主目录,检查是否有.bash_profile。如果是,请打开它;如果不是,请创建一个。将以下内容添加到该文件。

 export PATH="$PATH:~/development/sdk/flutter/bin"
 export ANDROID_HOME="/Users/darish/development/sdk/android"
 export PATH="$PATH:$ANDROID_HOME/platform-tools"

6。完成上述所有步骤后,运行flutter doctor --android-licenses并接受所有许可证。

flutter doctor --android-licenses

7。现在运行扑医生,一切正常。如果您需要其他帮助,请告诉我。 :)

仅此而已,祝您愉快:)

答案 1 :(得分:1)

对我有用的东西

  1. 运行Flutter Doctor --android-licenses -v
  2. 我收到一条类似这样的消息:

$ flutter doctor --android-licenses -v Android sdkmanager工具不 找到(/ Users / juarse1 / Library / Android / sdk / tools / bin / sdkmanager)。尝试 重新安装或更新您的Android SDK,请访问 https://flutter.dev/setup/#android-setup以获得详细说明。

  throwToolExit (package:flutter_tools/src/base/common.dart:28:3)
  AndroidLicenseValidator.runLicenseManager (package:flutter_tools/src/android/android_workflow.dart:311:7)
  Doctor.diagnose (package:flutter_tools/src/doctor.dart:243:38)

这是因为Android SDK找不到命令工具,但是需要强制将其从过时的软件包中拉出,因此: 3.转到Android Studio->首选项->系统设置-> Android SDK-> SDK工具部分 4.取消选中底部的隐藏过时的软件包 5.确保选中两个选项:

Android SDK平台工具和Android SDK工具(已淘汰)

  1. 确定,关闭Android Studio
  2. 运行Flutter Doctor --android-licenses,应该可以运行!

答案 2 :(得分:1)

问题似乎是在Java 11(或9和10)中,JDK中不包含jaxb库,而android studio sdkmanager无法读取许可证xml文件。 您必须在类路径中包含此库(如果使用的是Java 11),则可以按照此处发布的说明进行操作(在Windows 10中对我有用)

https://medium.com/@parsher/flutter-android-sdkmanager-update-with-jdk-12-ad8098165472

不需要最后一步。包括类路径行之后,运行de flutter doctor,一切都应该没事。

答案 3 :(得分:0)

如果您使用的是Java 11或更高版本,则只需要jaxb库,该库在JDK 11/12运行时(特别是在Win 10上)不包含在其中。

请遵循以下步骤:

  1. 从以下位置下载 wget 工具-> https://eternallybored.org/misc/wget/ 并在计算机中设置环境变量 path 以在cmd提示符下运行wget命令

  2. 找到您的Android SDSK \ tools文件夹( \ tools)并使用cd命令将其更改为目录: cd \ tools

  3. tools 文件夹中执行以下命令:

    mkdir jaxb_lib

    wget https://repo1.maven.org/maven2/javax/activation/activation/1.1/activation-1.1.jar -O jaxb_lib / activation.jar

    wget https://repo1.maven.org/maven2/com/sun/xml/bind/jaxb-xjc/2.3.2/jaxb-xjc-2.3.2.jar -O jaxb_lib / jaxb-xjc.jar

    wget https://repo1.maven.org/maven2/com/sun/xml/bind/jaxb-core/2.3.0.1/jaxb-core-2.3.0.1.jar -O jaxb_lib / jaxb-core.jar

    wget https://repo1.maven.org/maven2/org/glassfish/jaxb/jaxb-jxc/2.3.2/jaxb-jxc-2.3.2.jar -O jaxb_lib / jaxb-jxc.jar

    wget https://repo1.maven.org/maven2/javax/xml/bind/jaxb-api/2.3.1/jaxb-api-2.3.1.jar -O jaxb_lib / jaxb-api.jar

    wget https://repo1.maven.org/maven2/com/sun/xml/bind/jaxb-impl/2.3.2/jaxb-impl-2.3.2.jar -O jaxb_lib / jaxb-impl.jar

    wget https://repo1.maven.org/maven2/com/sun/istack/istack-commons-runtime/3.0.8/istack-commons-runtime-3.0.8.jar -O jaxb_lib / istack-commons-runtime.jar

  4. 转到 \ tools \ bin 文件夹,并使用您喜欢的文件编辑 sdkmanager.bat avdmanager.bat 文件文本编辑器(可以使用记事本)。

  5. 将以下代码粘贴在语句“ @ rem Execute sdkmanager” 之前以设置类路径。

    set CLASSPATH =%CLASSPATH%;%APP_HOME%\ jaxb_lib \ jaxb-api.jar 设置CLASSPATH =%CLASSPATH%;%APP_HOME%\ jaxb_lib \ jaxb-core.jar 设置CLASSPATH =%CLASSPATH%;%APP_HOME%\ jaxb_lib \ jaxb-impl.jar 设置CLASSPATH =%CLASSPATH%;%APP_HOME%\ jaxb_lib \ jaxb-jxc.jar 设置CLASSPATH =%CLASSPATH%;%APP_HOME%\ jaxb_lib \ jaxb-xjc.jar 设置CLASSPATH =%CLASSPATH%;%APP_HOME%\ jaxb_lib \ activation.jar 设置CLASSPATH =%CLASSPATH%;%APP_HOME%\ jaxb_lib \ istack-commons-runtime.jar

  6. 最后执行: \ tools \ bin \ sdkmanager --update

我们都完成了。现在运行 flutter doctor ,现在您的android许可证状态错误应该消失了。干杯!!!