我这周刚开始使用 Ubuntu 18.0 LTS,从 Windows 切换过来,想重新安装 Android Studio 和 Flutter。我按照所说的所有步骤安装了 Android Studio,它与所有 SDK 都能正常工作。然而,当我想安装 Flutter 时,它给出了异常:
Doctor summary (to see all details, run flutter doctor -v):
Unhandled exception:
Exception: Android sdkmanager tool not found (/usr/lib/android-sdk/tools/bin/sdkmanager).
Try re-installing or updating your Android SDK,
visit https://flutter.io/setup/#android-setup for detailed instructions.
如果需要,请索要堆栈跟踪。
我能找到的最接近的问题是:How to install SDK manager on linux ubuntu 16.04?但我无法真正理解如何操作这些说明。我可能需要你在说明中非常清楚,因为我是 Linux 平台的新手。
工具/package.xml:
<ns2:repository xmlns:ns2="http://schemas.android.com/repository/android/common/01"
xmlns:ns3="http://schemas.android.com/sdk/android/repo/addon2/01"
xmlns:ns4="http://schemas.android.com/sdk/android/repo/sys-img2/01"
xmlns:ns5="http://schemas.android.com/repository/android/generic/01"
xmlns:ns6="http://schemas.android.com/sdk/android/repo/repository2/01">
<license id="apache-2.0" type="text">Please refer to Apache v2.0 license</license>
<localPackage path="tools" obsolete="false">
<type-details xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ns5:genericDetailsType"/>
<revision>
<major>25</major>
<minor>0</minor>
<micro>0</micro>
</revision>
<display-name>Android SDK Tools</display-name>
<uses-license ref="apache-2.0"/>
<dependencies>
<dependency path="platform-tools">
<min-revision>
<major>20</major>
</min-revision>
</dependency>
</dependencies>
</localPackage>
</ns2:repository>
Flutter doctor -v 输出:
[✓] Flutter (Channel beta, v0.7.3, on Linux, locale en_IN)
• Flutter version 0.7.3 at /home/andi/Downloads/flutter
• Framework revision 3b309bda07 (13 days ago), 2018-08-28 12:39:24 -0700
• Engine revision af42b6dc95
• Dart version 2.1.0-dev.1.0.flutter-ccb16f7282
[!] Android toolchain - develop for Android devices (Android SDK 28.0.2)
• Android SDK at /home/andi/Android/Sdk
• Android NDK location not configured (optional; useful for native profiling support)
• Platform android-28, build-tools 28.0.2
• ANDROID_HOME = /home/andi/Android/Sdk
• Java binary at: /home/andi/Downloads/android-studio-ide-173.4907809-linux/android-studio/jre/bin/java
• Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1024-b01)
! Some Android licenses not accepted. To resolve this, run: flutter doctor --android-licenses
[✓] Android Studio (version 3.1)
• Android Studio at /home/andi/Downloads/android-studio-ide-173.4907809-linux/android-studio
• Flutter plugin version 28.0.1
• Dart plugin version 173.4700
• Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1024-b01)
[!] Connected devices
! No devices available
! Doctor found issues in 2 categories.
如果您在接受 SDK 许可证时遇到此错误。
➜ ~ flutter doctor --android-licenses
Android sdkmanager not found. Update to the latest Android SDK and ensure that the cmdline-tools are installed
to resolve this
最初的 android-sdk 的结构是:
android-sdk
├── build-tools
│ ├── 29.0.3 -> debian
│ └── debian
│ └── lib
├── cmdline-tools
│ ├── tools
│ │ ├── bin
我配置 android 许可证的方法是通过将“工具”更改为“最新”来更改 android-sdk 目录的结构
android-sdk
├── build-tools
│ ├── 29.0.3 -> debian
│ └── debian
│ └── lib
├── cmdline-tools
│ ├── latest
│ │ ├── bin
| | |
我在 Ubuntu 上安装时遇到了这个问题。您需要将环境变量 ANDROID_HOME 设置为您安装 android sdk 的路径才能使 flutter 工作。
假设您在主目录中安装了 SDK,请打开终端并发出此命令
ANDROID_HOME=~/Android-SDK flutter doctor
如果有效,则将环境变量添加到您的配置文件中以使其持久化,方法是添加
export ANDROID_HOME=~/Android-SDK
到你的 ~/.profile 脚本,然后重新登录到 Ubuntu。
显然,如果你将 android sdk 安装在不同的目录中,你只需要将 ~/ 替换为该目录,例如,如果你将 sdk 安装到 /opt ,那么命令将是 ANDROID_HOME=/opt/Android-SDK 颤动医生
检查了我的 android sdk + flutter 设置后,我还最终将以下内容添加到我的路径中
~/Android-SDK/platform-tools
您可以在修改您的个人资料之前通过终端中的以下命令进行测试
PATH=$PATH:~/Android-SDK/platform-tools ANDROID_HOME=~/Android-SDK flutter doctor
再次将 ~/Android-SDK 更改为您安装 android SDK 的位置。如果有效,请相应地更改您的个人资料并重新登录到 Ubuntu。
我总是很困惑,为什么一个安装包不应该包含所有必需的依赖项,却给这么多人带来麻烦(也许是有趣)?
无论如何,我想在zmofsx解决方案中添加一些内容,因为对我来说,该解决方案并没有完全解决问题,我还必须执行下面描述的更多步骤。
希望这些可以帮助某人排除故障。
因此,在执行了上面描述的步骤之后,我在控制台中执行了以下操作:
flutter doctor --android-licenses
点击 Y 显示所有许可证,然后点击 Y 显示每个许可证。然后
flutter doctor
这是我的控制台输出:
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 3.0.5, on Ubuntu 20.04.4 LTS 5.4.0-122-generic, locale en_GB.UTF-8)
[✓] Android toolchain - develop for Android devices (Android SDK version 33.0.0)
[✓] Chrome - develop for the web
[✓] Linux toolchain - develop for Linux desktop
[✓] Android Studio (version 2021.2)
[✓] Android Studio
[✓] VS Code (version 1.69.2)
[✓] Connected device (2 available)
[✓] HTTP Host Availability
• No issues found!
然后测试结果:
mkdir flutter_example
cd flutter_example
flutter create .
flutter run -d linux
对于那些使用 pop_os 22 并使用 flatpak 安装了 android studio 的用户 问题是android studio是孤立的,所以你需要配置android-sdk和android-studio-dir的路径
flutter config --android-sdk ~/Android/Sdk
flutter config -android-studio-dir path/android-studio
对于从商店安装的 pop_os,您可以在这里找到它 /home//.local/share/flatpak/app/com.google.AndroidStudio/current/active/files/extra/android-studio
然后您将运行
flutter doctor --android-licenses
并接受所有许可证,因此现在 flutter doctor
将不会显示错误。
使用Flutter的config工具
flutter config --android-sdk ~/Android/Sdk/
flutter config --android-studio-dir ~/android-studio/
接受许可后
flutter doctor --android-licenses
重新安装android studio可以解决这个问题。