5

安装和环境配置

安装和环境配置 - Flutter 中文文档 - Flutter 社区中文资源
打开上面的文档,开始准备Flutter 的安装和环境配置,在 flutter doctor 中遇到了各种报错,好在网友们都有各种解决办法,一搜就能搜到,解决了我遇到的问题,参考资料中都有,不再赘述;

遇到各种问题

运行 flutter doctor 命令查看是否需要安装其它依赖项来完成安装:

    flutter doctor

运行报错:

[!] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
    X Android license status unknown.
      Try re-installing or updating your Android SDK Manager.

不管它直接flutter run 的话,就是报错:

Error connecting to the service protocol: HttpException: Connection closed before full header was received

还是得解决Android license status unknown这个报错才行,解决办法:

>flutter doctor --android-licenses
>C:/Users/xxx/AppData/Local/Android/Sdk/tools/bin/sdkmanager --update

然后又报错:

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:583)
        at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
        ... 5 more

看到说是设置:

Windows:

set JAVA_OPTS='-XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee'

有的是:

DEFAULT_JVM_OPTS='"-Dcom.android.sdklib.toolsdir=$APP_HOME" -XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee'

试了,再次运行 sdkmanager --update 都不对,报错:

图片描述
最后,打开C:\Users\xxx\AppData\Local\Android\Sdk\tools\bin\sdkmanager.bat,编辑:DEFAULT_JVM_OPTSk 看到原值是
set DEFAULT_JVM_OPTS="-Dcom.android.sdklib.toolsdir=%~dp0\.." 将其注释掉,
修改为:set DEFAULT_JVM_OPTS="-Dcom.android.sdklib.toolsdir=%~dp0\.." -XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee

@rem set DEFAULT_JVM_OPTS="-Dcom.android.sdklib.toolsdir=%~dp0\.."
set DEFAULT_JVM_OPTS="-Dcom.android.sdklib.toolsdir=%~dp0\.." -XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee

这下好了,重新执行sdkmanager --update,此时报错变成了:

Error occurred during initialization of boot layer
java.lang.module.FindException: Module java.se.ee not found

看到别人的解决办法是降低java jdk的版本,于是下载了jdk低版本的,仍然不行;
检查了自己的版本,发现是
图片描述
我的天哪,把我搞懵了,忽然想起来,我们之前用过appcan开发,用 where 指令查看了一下,果然
图片描述
于是修改环境变量,把appcanpath放在JAVA_HOME之后,再次查看版本正常

重新打开命令行,运行
图片描述
没错了,喜不自胜,哈哈哈

然后打开vs code 运行 flutter doctor,还是报错 X Android license status unknown. 真是崩溃!!!

最后发现是管理员权限的问题,还真是,用管理员权限打开 vs code ,再次 运行 flutter doctor,大功告成!!!

环境配置成功,三种方式均可运行 flutter doctor

Android Studio 运行

图片描述

管理员权限打开vs code

图片描述
debug模式 热重载:
图片描述

不用管理员权限运行vs code,只在vs code里修改代码,在命令行里运行

图片描述

vs code中运行时使用的Android Studio的模拟器,你也可以用直接用真机。

参考

安装和环境配置 - Flutter 中文文档 - Flutter 社区中文资源
windows + flutter + vscode 安装,配置,运行(详细版本)
flutter doctor时显示X Unable to locate Android SDK的解决方案
stackoverflow: Android License Status Unknown
Flutter踩坑之 Android license status unknown 解决方案
搭建Flutter开发环境踩过的一些坑
运行sdkmanager --update 报错的解决方案
Flutter个人填坑指南详解
set DEFAULT_JVM_OPTS
module java.se.ee not found


北堂棣
6.6k 声望116 粉丝

2016年应届毕业生。