奇怪的地方

Flutter学习:环境搭建

前情提要

为了完成毕业设计,需要一个方便的跨平台移动 App 框架。经过仔细筛选随便谷歌,选择了谷歌家的 Flutter 框架。
环境:ArchLinux ,内核版本 5.5.11

安装

Flutter 有国内镜像源,总之愉快地按照flutter.cn的文档进行设置。

首先下载并解压 Flutter ,然后设置环境变量(走的清华源加速)。注意 $PWD 按照实际解压目录进行调整。

1
2
3
export PUB_HOSTED_URL=https://mirrors.tuna.tsinghua.edu.cn/dart-pub
export FLUTTER_STORAGE_BASE_URL=https://mirrors.tuna.tsinghua.edu.cn/flutter
export PATH="$PWD/flutter/bin:$PATH"

运行 flutter doctor 来检测,会提示缺少的组件。安装 Android Studio 以及它的 Flutter 插件即可。依赖 Dart 会自动安装。

需要额外注意的是这个Issue提出的 sdkmanager 调用问题。
安装 Android Studio 之后,需要在界面里选择 Configure > SDK Manager ,取消勾选 Hide Obsolete Packages ,然后勾选安装 SDK Tools 分页的 Android SDK Tools(Obsolete)
根据这个StackOverflow问题,如果之后执行

1
flutter doctor --android-licenses

的时候按 y 卡住,得执行下面这个同意许可证:

1
Android/Sdk/tools/bin/sdkmanager --licenses

第一个工程

创建工程的时候卡住了!无奈之下用任务管理器杀掉了 Android Studio 和 Dart 。。。
原因是默认的 Maven 源太慢,在执行 flutter pub get 的时候依赖根本装不上。得编辑下面这两个文件来换源:

1
2
flutter/packages/flutter_tools/gradle/flutter.gradle
工程目录/android/build.gradle

按照下面的内容进行编辑:

1
2
3
4
5
6
7
//google()
//jcenter()
//找到上面这两个源,注释掉,然后加上后面这个阿里的源。
//工程目录下的那个有两处,需要注意。
maven { url 'https://maven.aliyun.com/repository/google' }
maven { url 'https://maven.aliyun.com/repository/jcenter' }
maven { url 'http://maven.aliyun.com/nexus/content/groups/public' }

然后用 Android Studio 导入刚才建立的工程就正常了。按提示执行:

1
flutter pub get

ADB没有权限

除了android-tools,还需要安装android-udev。装完执行:

1
udevadm control --reload-rules

还不行就手动添加

热重载不能用

Flutter 并不支持5.5以上的 Linux 内核版本,捣鼓半天才发现是这个缘故。
ArchLinux 的长期支持内核版本正好是 5.4 ,遂安装之。

1
pacman -Sy linux-lts linux-lts-headers

Nvidia 显卡还要再安装 LTS 版本的驱动!我没发现这个,直接挂了,靠 Live 盘才救回来。。。

1
pacman -Sy nvidia-lts

然后把grub.cfg更新一下

1
2
sudo mount -o rw,remount /boot
sudo grub-mkconfig > /boot/grub/grub.cfg

重启再看,热重载按钮就亮起来啦!