很多开发工具的环境搭建过程都不是太简单,跟这些技术主要还是来自MG有很大的关系;就一个网络不通,往往很多时候都能把人急死,特别是这几年封锁的趋势越来越明显,不光是我们个人要翻墙,大厂更需要带头翻墙搭建镜像服务器。

我用Windows 10,这里把Windows配置Flutter开发环境的过程记录一下,避免下次还要搭建遇到同样的问题费时间。

国内上 https://flutter.cn/ 上面有好多可学习的资源;上面也有搭建的说明,我这里主要是做补充和重点说明。

安装Git

后面安装Flutter需要用到Git,这里先安装这个工具,安装包自己上网找https://git-scm.com/download/win,一路狂点下一步。安装完成之后,应该能看到环境变量path中多出一条路径

C:\Program Files\Git\cmd

配置镜像

设置下面两个环境变量,设置在当前用户,或所有用户都可以。(记住不是path,而是单独的键值对)

FLUTTER_STORAGE_BASE_URL: https://storage.flutter-io.cn
PUB_HOSTED_URL: https://pub.flutter-io.cn

安装Flutter

最新的Flutter安装压缩包下载之后,直接解压缩到本地目录,这里我放在 D:\Sdks\flutter,然后在环境变量path中也加入路径

D:\Sdks\flutter\bin

安装Android Studio

虽然VS code也支持Flutter开发,不过我觉得还是 Android Studio好,集成度好。官方下载: https://developer.android.google.cn/studio

安装的时候涉及到两个目录,一个是首先安装的AS IDE路径,另一个是安装后面会配置下载 Android SDK,这两个地址默认肯定是放C盘了,但是这些文件普遍很大,如果C盘空间不够,建议都改成其它盘符。这里我IDE装在默认的C盘,但是SDK装在了:

D:\Sdks\Android\sdk

安装完IDE和SDK之后,记住要设置环境变量ANDROID_HOME=D:\Sdks\Android\sdk(单独的键值对,不是path)。安装过程中也会自动设置一个模拟器,也可以稍后自己去添加新的模拟器:Tools -> AVD Manager

安装的过程中会出现一个设置proxy的弹框,不用理会,直接下一步。

安装AS插件

安装Flutter插件,会提示把Dart插件也一起装上的,如下:

image-20201214233634991

验证安装结果

看一眼设置的环境变量

image-20201214235258287

回到cmd控制台,检查Flutter环境。用flutter doctor检查安装环境,可能出现下面的licenses提示,运行提示命令,一路y下去就好了。

# flutter doctor

# 可能的错误提示
[!] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
    X Android licenses not accepted.  To resolve this, run: flutter doctor --android-licenses

如果你刚好用的是 Flutter 1.22.x 和 AS 4.1.0 版本,可能会出现找不到插件的错误,参考以前的文章:/tech/flutter/error-with-flutter1.22.x.html

新建项目测试

新建一个空白的Flutter Application,启动模拟器,Debug一下看看,你会发现更大的麻烦出现了,网络不通,或不流畅。

Launching lib\main.dart on sdk gphone x86 arm in debug mode...
Running Gradle task 'assembleDebug'...

# 会停留在这里很长时间,看网卡状态,就知道他在下载东西

建议把本机的DNS改成谷歌的8.8.8.8,这样可能部分DNS都不通的情况能解决,但是网速还是慢,等着吧,好在只下载一次,以后其它项目就不用下载了。

有一个缓解的解决办法,先看当前AS使用的Gradle版本,在当前项目android\gradle\wrapper\gradle-wrapper.properties中可以看到一段配置

#Fri Jun 23 08:50:38 CEST 2017
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip

自己上官网下载gradle https://gradle.org/releases/ 然后放到类似下面的目录中,再启动项目试一试,估计还是会下载一些别的东西,那就继续等下去吧。

C:\Users\xxx\.gradle\wrapper\dists\gradle-5.6.2-all\9st...tbb\gradle-5.6.2-all.zip

又是漫长的等待,大概30分钟,我的下载速度是几百Kb/S,最后终于出来了,看看首次运行的日志

Launching lib\main.dart on sdk gphone x86 arm in debug mode...
Running Gradle task 'assembleDebug'...
Checking the license for package Android SDK Build-Tools 28.0.3 in D:\Sdks\Android\Sdk\licenses
License for package Android SDK Build-Tools 28.0.3 accepted.
Preparing "Install Android SDK Build-Tools 28.0.3 (revision: 28.0.3)".
"Install Android SDK Build-Tools 28.0.3 (revision: 28.0.3)" ready.
Installing Android SDK Build-Tools 28.0.3 in D:\Sdks\Android\Sdk\build-tools\28.0.3
"Install Android SDK Build-Tools 28.0.3 (revision: 28.0.3)" complete.
"Install Android SDK Build-Tools 28.0.3 (revision: 28.0.3)" finished.
Checking the license for package Android SDK Platform 29 in D:\Sdks\Android\Sdk\licenses
License for package Android SDK Platform 29 accepted.
Preparing "Install Android SDK Platform 29 (revision: 5)".
"Install Android SDK Platform 29 (revision: 5)" ready.
Installing Android SDK Platform 29 in D:\Sdks\Android\Sdk\platforms\android-29
"Install Android SDK Platform 29 (revision: 5)" complete.
"Install Android SDK Platform 29 (revision: 5)" finished.
√ Built build\app\outputs\flutter-apk\app-debug.apk.
Installing build\app\outputs\flutter-apk\app.apk...
Waiting for sdk gphone x86 arm to report its views...
Debug service listening on ws://127.0.0.1:54442/yVEmYPqCn9k=/ws
Syncing files to device sdk gphone x86 arm...

结语

以后新建项目应该不会有这么漫长的等待了,忍了吧,貌似国内也还没有相应的更快的源;我折腾了好久都没有找到很好的解决办法,不是这个错就是那个地方错,大家就不要折腾了,就是慢一点,等着吧。如果有真正有效的解决办法,希望大神赐教。

IT原创技术我们还是远远落后于大洋彼岸的国度,这些年虽然有了长足的进步,但还是没有摆脱"吃土"的命运。我等IT科班生都要继续奋斗啊,要有创新的勇气;当然也需要创新的土壤,年纪大的IT工程师就不好找工作了,这种现象只能表明我们还大都是做一些低端的工作。

(完)