安装和环境配置
安装和环境配置 - 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.(SchemaModule.java:156)
at com.android.repository.api.SchemaModule.(SchemaModule.java:75)
at com.android.sdklib.repository.AndroidSdkHandler.(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 指令查看了一下,果然
于是修改环境变量,把appcan的path放在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的模拟器,你也可以用直接用真机。
参考