我一直在使用针对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
子目录和其中的好东西吗?感谢和抱歉,如果我忽略了一些基本知识。
答案 0 :(得分:38)
似乎最新版本的Android SDK将“ Android SDK工具”包重命名为“ Android-SDK命令行工具”。
但是很遗憾,当前的Flutter SDK稳定版本(v1.12.13+hotfix.8
)与此更改不兼容,并且一直显示错误消息。
解决方法:
按照@Mark Ebden的建议,您只需在 SDK工具页上取消选中隐藏过时的软件包复选框,就会看到 Android SDK工具(已过时) 26.1.1 。安装它,就可以了。如果发现缺少任何内容,请阅读以下详细说明。
有关更多信息,请参见关于{@ 3}的flutter存储库问题。
这是在使用最新版本的Mac OS安装android studio时所需的完整详细信息。
1。安装Android Studio稳定版。
2。打开android studio
3。打开SDK管理器。请参见下面的屏幕截图。
4。确保您已下载所有必需的内容。请参见下面的屏幕截图。
请注意,我正在为我的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)
对我有用的东西
$ 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工具(已淘汰)
答案 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上)不包含在其中。
请遵循以下步骤:
从以下位置下载 wget 工具-> https://eternallybored.org/misc/wget/ 并在计算机中设置环境变量 path 以在cmd提示符下运行wget命令
找到您的Android SDSK \ tools文件夹(
在 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
转到
将以下代码粘贴在语句“ @ 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
最后执行:
我们都完成了。现在运行 flutter doctor ,现在您的android许可证状态错误应该消失了。干杯!!!