美文网首页
Flutter doctor(Android)踩坑

Flutter doctor(Android)踩坑

作者: 小生不怕 | 来源:发表于2023-04-09 15:48 被阅读0次

在搭建Flutter Android环境后,在终端执行Flutter doctor命令,踩了一些坑,记录下。

坑一

在终端执行flutter doctor --android-licenses,提示Android sdkmanager tool not found

解决办法

需要在Android Studio(或者IDEA)装Android SDK Tools

坑二

在终端执行flutter doctor --android-licenses,提示

Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema 
at com.android.repository.api.SchemaModule$SchemaModuleVersion.<init>(SchemaModule.java:156) 
at com.android.repository.api.SchemaModule.<init>(SchemaModule.java:75) 
at com.android.sdklib.repository.AndroidSdkHandler.<clinit>(AndroidSdkHandler.java:81) 
at com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.java:73) 
at com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.java:48) Caused by: java.lang.ClassNotFoundException: javax.xml.bind.annotation.XmlSchema 
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581) 
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178) 
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522) ... 5 more

解决办法

需要在Android Studio(或者IDEA)装Android SDK Command-line Tools

坑三

执行Flutter doctor
提示:

[!]Android Studio
  x Flutter plugin not installed; this adds Flutter specific functionality.
  x Dart plugin not installed; this adds Dart specific functionality.

解决办法

情况一

按照要求去插件市场下载安装Flutter插件(一般会提示,需要顺带安装dart)就可以解决了。

情况二

但有些情况,你明明已经安装了,也重启了Android Studio、重启电脑了还是这样的提示。这是因为Android Studio安装的插件文件路径和该版本Flutter SDK所能识别的路径不一致导致的。需要添加软链接来解决,具体如下:

像我们公司项目用的Flutter 版本很老,是Flutter 1.12.13+hotfix.9, 在使用Android Studio时就很容易出现上面的问题,需要终端执行

ln -s ~/Library/Application\ Support/Google/AndroidStudio4.2/plugins ~/Library/Application\ Support/AndroidStudio4.2

也就是说,我这个版本的Android Studio插件是保存在~/Library/Application\ Support/Google/AndroidStudio4.2/plugins路径的,而当前版本的Flutter SDK却在~/LIbrary/Application\ Support/AndroidStudio4.2里面找,当然找不到了,需要添加一个软链接(替身文件),使得能够被正常访问。

同理,在使用IntelliJ IDEA时也一样,但是IDEA插件真实安装位置可能是下面几个当中的一个(跟版本有关):

  • /Users/用户名/Library/Application Support/IntelliJIdeaXXXXXX,用于保存安装的插件
  • /Users/用户名/Library/Caches/IntelliJIdeaXXXXXX,用于保存缓存、日志、以及本地的版本控制信息(local history 这个功能)
  • /Users/用户名/Library/Preferences/IntelliJIdeaXXXXXX,用于保存自己IDEA的个人配置,相当于 Windows版本的config目录
  • /Users/用户名/Library/Application Support/JetBrains/IntelliJIdeaXXXXXX,这个目录下也有其配置文件

坑四

执行Flutter doctor
提示:

[!]Android Studio
  x Unable to find bundled java version.
  • 如果Applications/Android Studio.app/Contents/jre/下没有jdk文件夹,那么将原本Applications/Android Studio.app/Contents/jre/里面的所有东西整个拷贝到jdk文件夹里面。
  • 如果连Applications/Android Studio.app/Contents/jre/也不存在,那么就copy Applications/Android Studio.app/Contents/jbr变成Applications/Android Studio.app/Contents/jre

相关文章

网友评论

      本文标题:Flutter doctor(Android)踩坑

      本文链接:https://www.haomeiwen.com/subject/whpbddtx.html