![](/img/trans.png)
[英]the android app crashes or not installs after building using android studio
[英]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
子目录和里面的好东西? 如果我忽略了一些基本的东西,谢谢和抱歉。
似乎最新版本的 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 查看一切正常。 如果您需要任何进一步的帮助,请告诉我。 :)
就是这样,祝你有美好的一天:)
什么对我有用:
$ 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 工具(已过时)
问题似乎是在 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 上)。
请按照以下步骤操作:
从位置下载wget工具-> https://eternallybored.org/misc/wget/并在电脑中设置环境变量路径,在cmd提示符下运行wget命令
找到您的 Android SDSK\\tools 文件夹 (<ANDROID_SDSK>\\tools) 并使用 cd 命令更改目录: cd <ANDROID_SDSK>\\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。罐
转到<ANDROID_SDSK>\\tools\\bin文件夹并使用您喜欢的文本编辑器(记事本即可)编辑sdkmanager.bat和avdmanager.bat文件。
在语句“@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
最后执行:<ANDROID_SDSK>\\tools\\bin\\sdkmanager --update
我们都完成了。 现在运行flutter doctor ,现在你的 android 许可证状态错误应该消失了。 干杯!!!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.