繁体   English   中英

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

我注意到这一点是因为 running 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 Tools (Obsolete) 26.1.1 安装它,你就可以开始了。 如果您发现任何遗漏,请阅读以下详细说明。

有关更多信息,请参阅 flutter repo 上的问题。


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

1.安装Android Studio稳定版。

2.打开安卓工作室

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 并接受所有许可。

flutter doctor --android-licenses

7. 现在运行 flutter doctor 查看一切正常。 如果您需要任何进一步的帮助,请告诉我。 :)

就是这样,祝你有美好的一天:)

什么对我有用:

  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. 确保选中 BOTH 选项:

Android SDK 平台工具和 Android SDK 工具(已过时)

  1. 好的,关闭 Android Studio
  2. 运行 flutter doctor --android-licenses,应该可以工作!

问题似乎是在 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 库(尤其是在 Win 10 上)。

请按照以下步骤操作:

  1. 从位置下载wget工具-> https://eternallybored.org/misc/wget/并在电脑中设置环境变量路径,在cmd提示符下运行wget命令

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

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

    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。罐

  4. 转到<ANDROID_SDSK>\\tools\\bin文件夹并使用您喜欢的文本编辑器(记事本即可)编辑sdkmanager.batavdmanager.bat文件。

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM