Flutter 踩坑经验(不定期更新)

最近考研复习很无聊,手上的项目又没什么动力做,干脆看看 flutter 战未来,在这里记录踩过的坑和解决方法。


大部分问题都能在官方文档找到,写得比我好得多,本帖主要记录过程中遇到的一些奇难杂症(吸引问题体质)。

开始搞起

环境配置参考的是 Flutter 的文档,前置条件是在 Windows 10 环境下,我的 Android Studio 能使用 Java 环境顺利开发项目,也就是说 Android SDK、Android Studio 这些问题我都是规避了的。下载了 Flutter SDK 后解压到本机一个合适的路径里(我放在了 D:\flutter,建议不要出现中文路径),运行其中的 flutter_console.bat 便能看到 Flutter Console.

flutter_console.png

按照官方的指引,运行一遍 flutter doctor,不出所料是一堆问题的(毕竟各种IDE、编辑器的 Flutter插件我都还没装,不出问题才怪),没关系,一步步来,先配置好环境变量再说。

配置环境变量

在 Windows 搜索输入 env 快速打开环境变量编辑,在用户变量里添加以下两个环境变量(国内必备):

flutter_env_1.png
flutter_env_2.png

最后再在 Path 的最后加上你的 Flutter 解压路径下的 bin 文件夹,就完成环境变量的配置了。

浏览 Android license

这次直接通过命令行输入 flutter doctor,就可以直接愉快的搞起 flutter 了,定睛一看有个 Android license 的问题提示,于是按照指引输入

flutter doctor --android-licenses

命令行中会依次出现多个 Android license 的内容,浏览完毕多次按 y 确认就搞定了。

安装扩展

我平时主要会用 Android Studio 和 VSCode 跑 Flutter 应用,所以就按照官方指引安装一下 plugin 或者 extension 就好。

尝试构建

虽然前面看起来并不难,但配置环境嘛,总会有各种各样的问题等着,用 AS 新建一个 Flutter 项目, Flutter SDK Path 就选 SDK 的解压位置,其他都默认就完成创建了第一个 Flutter App,虽然代码还不太看得懂,但总归是跑跑看嘛,结果马上就出问题。

flutter pub get

这个问题具体表现为 IDE 提示需要对项目执行 flutter pub get(我猜应该是获取资源吧),但执行命令后出现的结果是

Waiting for another flutter command to release the startup lock...

查了一下,要清一下之前的执行命令产生的锁,先在任务管理器把所有 dart.exe 进程结束,再进入 flutter/cache 路径把 lockfile 删除,只要前文的环境变量配置正确(指国内必备的那两个),再次运行应该就能顺利执行 flutter pub get 了。

编译时下载依赖问题

最不想遇到的问题还是遇到了,果然还是逃不出 Gradle 的掌心,好在找到了靠谱的解决方案,报错代码类似这样:

FAILURE: Build failed with an exception.

* What went wrong:
Could not determine the dependencies of task ':app:compileDebugJavaWithJavac'.
> Could not resolve all task dependencies for configuration ':app:debugCompileClasspath'.
> Could not resolve io.flutter:flutter_embedding_debug:1.0.0-c9506cb8e93e5e8879152ff5c948b175abb5b997.

解决方案是这样的:

修改:flutter/packages/flutter_tools/gradle/resolve_dependencies.gradle

flutter/packages/flutter_tools/gradle/aar_init_script.gradle

flutter/packages/flutter_tools/gradle/flutter.gradle

这三个文件中的: https://storage.googleapis.com/download.flutter.io 替换为:

http://download.flutter.io

重新编译就好了,注意此处的 https 也要改回 http(亲测)。

未完待续

posted @ 2020-08-02 21:16  Tripole  阅读(431)  评论(0)    收藏  举报