flutter配置

缘由

最近重温Android的开发,想到了一直没有配置好的flutter,又想尝试配置,结果还是失败!最后感觉失败之处是java版本过高了。但也有点不想弄了,java都到13了,你一个flutter连JAVA11都支持不了,我也不清楚吐槽什么了,不过也有点反思为啥有些东西的支持永远那么靠后?难道是为了兼容大部分的系统配置?或许我得考虑考虑把配置给将降了,不清楚是否可以多个环境,有空可以研究研究;

安装flutter

flutter中文网

下载flutter

推荐到Github去下载

flutter镜像配置

清华源配置

  • 编辑环境变量如下:
    变量
    FLUTTER_STORAGE_BASE_URL https://mirrors.tuna.tsinghua.edu.cn/flutter
    PUB_HOSTED_URL https://mirrors.tuna.tsinghua.edu.cn/dart-pub

flutter升级

我大概一年前捣鼓过这玩意,有安装就先更新了一下;

flutter upgrade

运行 flutter doctor

打开一个新的命令提示符或PowerShell窗口并运行以下命令以查看是否需要安装任何依赖项来完成安装:

flutter doctor

在命令提示符或PowerShell窗口中运行此命令。目前,Flutter不支持像Git Bash这样的第三方shell。

该命令检查您的环境并在终端窗口中显示报告。Dart SDK已经在捆绑在Flutter里了,没有必要单独安装Dart。 仔细检查命令行输出以获取可能需要安装的其他软件或进一步需要执行的任务(以粗体显示)

unable to locate ANDROID SDK

  • 运行如上图所示则需添加环境变量

添加后需重启terminal才能生效,后继续运行flutter doctor检查

变量
ANDROID_HOME 和你系统环境变量ANDROID_SDK_HOM的值一样

Android license status unknown

  • 运行如下命令即可
flutter doctor --android-licenses

一般如果是JAVA11版本一下的都没有问题了,JAVA11及以后因为缺少java.se.ee而陷入无法配置成功的麻烦;

一堆JAVA报错(如为下图,则建议降级JAVA到JAVA8)

报错如下:

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
  • 如何解决?

找到自己SDK目录(tools\bin\sdkmanager.bat)加以编辑:

DEFAULT_JVM_OPTSk 看到原值是

set DEFAULT_JVM_OPTS="-Dcom.android.sdklib.toolsdir=%~dp0\.."

将其(前面加最前面 @rem 即可)注释掉,修改为:

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

  • 再次运行flutter doctor –android-licenses

结果提示为Error occurred during initialization of boot layer
java.lang.module.FindException: Module java.se.ee not found

后查到的一个说法是,后面我就放弃了,不太可能为了一个软件而改动其他软件需要的java环境,真无语了!

This workaround only works for Java 9-10, java 11 removed java.se.ee entirely.
The Google team has known about the deprecation of se.ee since 2017. It’s fucking retarded that they haven’t updated it.

更新

我把JAVA降级到8版本,就不需要更改tools\bin\sdkmanager.bat文件了,如果更改的请改回默认值;

  • 后运行flutter doctor –android-licenses结果如下所示

会让你连输入几个确定的y

  • 再次运行则显示

  • 运行 flutter doctor

如有下面的配置,则去Android Studio 安装插件;

android 配置

  • 没安装的,移步Android Studio 配置
  • 在设置里搜索安装插件Flutter即可,具体使用移步官网;

参考


Comments

Leave a Reply

Your email address will not be published. Required fields are marked *