Flutter是谷歌的移动UI框架,可以快速在iOS和Android上构建高质量的原生用户界面。 Flutter可以与现有的代码一起工作。在全世界,Flutter正在被越来越多的开发者和组织使用,并且Flutter是完全免费、开源的。
开发环境
windows10
安装Flutter
获取Flutter SDK
- 官网下载
- github直接拉取代码(推荐使用)
环境变量配置
要在终端运行 flutter 命令, 你需要添加以下环境变量到系统PATH:
- 转到 “控制面板>用户帐户>用户帐户>更改我的环境变量”
- 在“用户变量”下检查是否有名为“Path”的条目:
- 如果该条目存在, 追加 flutter\bin的全路径,使用 ; 作为分隔符.
- 如果条目不存在, 创建一个新用户变量 Path ,然后将flutter\bin的全路径作为它的值.
- 在“用户变量”下检查是否有名为”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 来检查环境是否已经搞定,正常来说成功了。下面列举了一些可能会出现的问题和解决方法供大家参考
- 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
- https://services.gradle.org/distributions/gradle-4.10.2-all.zip 文件下载失败
直接通过浏览器下载该文件,然后在 android/gradle/wrapper中打开 gradle-wrapper.properties 文件 修改 distributionUrl=‘你下载后文件存放的路径’ - 代理问题
如果你在android studio中设置了android-sdk的国内镜像代理,那么一定会出现问题,因为这些代理会将一些其他的请求拦截掉,导致你的项目无法正常运行,而且就算你关掉代理,仍然不会成功,因为需要删除代理配置文件下的请求代理数据,文件位于你的android-sdk安装路径下,e:\android-sdk\tools\apps\SdkController\project.properties
总结
在配置Flutter开发环境的过程中,前前后后遇到了很多坑,个人建议如果能翻墙,还是不要设置各种代理,因为很可能某个代理转发了正常的请求而导致某些未知的问题。同时出现问题,建议去Flutter的issue内搜索,其中已经包含了很多常见的错误解决方式。