美文网首页
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