欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Flutter安装和踩坑指南(windows)

程序员文章站 2022-05-25 19:51:33
...

Flutter是谷歌的移动UI框架,可以快速在iOS和Android上构建高质量的原生用户界面。 Flutter可以与现有的代码一起工作。在全世界,Flutter正在被越来越多的开发者和组织使用,并且Flutter是完全免费、开源的。

开发环境

windows10

安装Flutter

获取Flutter SDK

  1. 官网下载
  2. github直接拉取代码(推荐使用)

环境变量配置

要在终端运行 flutter 命令, 你需要添加以下环境变量到系统PATH:

  1. 转到 “控制面板>用户帐户>用户帐户>更改我的环境变量”
  2. 在“用户变量”下检查是否有名为“Path”的条目:
    • 如果该条目存在, 追加 flutter\bin的全路径,使用 ; 作为分隔符.
    • 如果条目不存在, 创建一个新用户变量 Path ,然后将flutter\bin的全路径作为它的值.
  3. 在“用户变量”下检查是否有名为”PUB_HOSTED_URL”和”FLUTTER_STORAGE_BASE_URL”的条目,如果没有,也添加它们。两者的值如下
PUB_HOSTED_URL=https://pub.flutter-io.cn
FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn

运行 flutter doctor

运行flutter doctor ,如果没有没有任何报错,那么恭喜你,你之前已经集成了相关的环境,可以直接进行开发了。但是,如果没有安装过android-sdk 和 java-sdk 环境的朋友一定会报错,那么就需要继续了。

安装java-sdk

android-sdk的安装需要依赖java-sdk,所以需要安装java-sdk,具体的安装方法网上已经有很多了,在此不再赘述。

安装android-sdk

同样,android-sdk亦不再赘述。但是尽量*下载sdk而不要使用国内的镜像,因为设置代理以后,flutter的部分请求会被拦截转发到国内的镜像上而导致程序无法运行(这个坑我找了很久)

处理各种问题

运行 flutter doctor 来检查环境是否已经搞定,正常来说成功了。下面列举了一些可能会出现的问题和解决方法供大家参考

  1. Android license status unknown.
<!--执行-->
flutter doctor --android-licenses
<!--情况1-->
如果是询问你是否接受的,那么一直 y 下去即可
例如:
Review licenses that have not been accepted (y/N)? y
最后再次运行 flutter doctor
<!--情况2-->
A newer version of the Android SDK is required. To update, run:
C:\Users\tdmil\AppData\Local\Android\sdk\tools\bin\sdkmanager --update
执行(当然这个路径是根据你的sdk路径变化的)
C:\Users\tdmil\AppData\Local\Android\sdk\tools\bin\sdkmanager --update
  <!--情况2.1-->
  成功,执行 flutter doctor --android-licenses 一般就会出现情况1
  <!--情况2.2-->
  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:582)
        at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:190)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:499)
        ... 5 more
  这种情况一般是java的环境配置有问题,建议检查java环境
  <!--情况2.3-->
  其他更新错误
  将 \sdk\tools 文件夹重命名 改为 \sdk\tool
  运行 C:\Users\tdmil\AppData\Local\Android\sdk\tool\bin\sdkmanager --update
  更新完成后会新生成一个tools文件夹,将tools文件夹内的所有文件复制到 tool 内,重复的覆盖即可,删掉tools ,将tool 改回 tools 
  执行 flutter doctor --android-licenses
  1. https://services.gradle.org/distributions/gradle-4.10.2-all.zip 文件下载失败
    直接通过浏览器下载该文件,然后在 android/gradle/wrapper中打开 gradle-wrapper.properties 文件 修改 distributionUrl=‘你下载后文件存放的路径’
  2. 代理问题
    如果你在android studio中设置了android-sdk的国内镜像代理,那么一定会出现问题,因为这些代理会将一些其他的请求拦截掉,导致你的项目无法正常运行,而且就算你关掉代理,仍然不会成功,因为需要删除代理配置文件下的请求代理数据,文件位于你的android-sdk安装路径下,e:\android-sdk\tools\apps\SdkController\project.properties

总结

在配置Flutter开发环境的过程中,前前后后遇到了很多坑,个人建议如果能*,还是不要设置各种代理,因为很可能某个代理转发了正常的请求而导致某些未知的问题。同时出现问题,建议去Flutter的issue内搜索,其中已经包含了很多常见的错误解决方式。

相关标签: Flutter