前情提要
为了完成毕业设计,需要一个方便的跨平台移动 App 框架。经过仔细筛选随便谷歌,选择了谷歌家的 Flutter 框架。
环境:ArchLinux ,内核版本 5.5.11
安装
Flutter 有国内镜像源,总之愉快地按照flutter.cn的文档进行设置。
首先下载并解压 Flutter ,然后设置环境变量(走的清华源加速)。注意 $PWD 按照实际解压目录进行调整。
1 | export PUB_HOSTED_URL=https://mirrors.tuna.tsinghua.edu.cn/dart-pub |
运行 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 | flutter/packages/flutter_tools/gradle/flutter.gradle |
按照下面的内容进行编辑:
1 | //google() |
然后用 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 | sudo mount -o rw,remount /boot |
重启再看,热重载按钮就亮起来啦!