Android Studio 在没有 sdkmanager 的情况下安装

Android Studio installs without sdkmanager

我一直在使用 macOS 10.15.3 在 Flutter 中编程,目标是 iOS 设备。今天我也尝试安装 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 子目录和里面的好东西?谢谢,对不起,如果我忽略了一些基本的东西。

更新 1 (2020-02-29)

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

解决方法:

正如@Mark Ebden 所建议的,您只需取消选中SDK 工具 页面上的隐藏过时包 复选框,您就会看到Android SDK 工具(过时)26.1.1。安装它,你就可以开始了。如果您发现任何遗漏,请阅读以下详细说明。

有关详细信息,请参阅 this 关于 flutter repo 的问题。


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

1.安装 Android Studio 稳定版。

2。打开android工作室

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

4.确保你已经下载了所有需要的东西。请参阅下面的屏幕截图。

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

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 and accept all licenses.

flutter doctor --android-licenses

7.现在运行扑大夫看一切ok。如果您需要任何进一步的帮助,请告诉我。 :)

就这些了,祝你有愉快的一天:)

对我有用的:

  1. 运行 flutter doctor --android-licenses -v
  2. 我收到一条消息:

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

  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)

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

Android SDK Platform-Tools AND Android SDK Tools (Obsolete)

  1. 确定,关闭Android工作室
  2. 运行 flutter doctor --android-licenses, should work!

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

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

最后一步不是必须的。包含类路径行后,运行 de flutter doctor 一切都应该没问题。

如果您使用 Java 11 或更高版本,您只需要 JDK 11/12 中未包含的 jaxb 库 运行s(尤其是在 Win 10 上) ).

按照以下步骤操作:

  1. 从位置下载wget工具-> https://eternallybored.org/misc/wget/ 并在你的电脑中设置环境变量path为运行cmd prompt

    中的wget命令
  2. 找到您的 Android SDSK\tools 文件夹 (\tools) 并使用 cd 命令更改目录:cd \工具

  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.batavdmanager.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 许可证状态错误应该消失了。干杯!!!