Flutter Desktop on macOS with Github Actions
目录
1 Flutter Desktop 现状
截止2020/05/01,Flutter Desktop还处于alpha版本,还没有Ready for Producation。但是相比去年的版本,已经稳定了不少,也不会有太大的Braking Change。就三个Desktop Platform来说,macOS是最成熟、支持度最高的。
2 准备
- 切换到master分支或者dev分支
- 运行
flutter upgrade
- 运行
flutter config --enable-macos-desktop
,开启支持macOS编译 - Done!!!
3 创建项目
mkdir sample
cd sample
flutter create .
4 运行预览
可以看到,整个创建过程还是比较简单的,也没有什么坑。
5 Mobile库的兼容性
5.1 pin_input_text_field — 纯Dart实现
dependencies:
pin_input_text_field: ^3.0.1
兼容性: 💯
5.2 loading_indicator — 纯Dart实现
dependencies:
loading_indicator: ^1.1.0
兼容性:💯
5.3 path_provider — 基于Method Channel实现
dependencies:
path_provider: ^1.6.5
兼容性:💯不支持移动端特有的文件夹,比如External Storage,但是都会有相应的错误提示。
结论
总的来说,如果基于纯Dart实现的库,兼容性都是没问题的,但是如果是基于平台的库还是需要额外兼容。
6 Flutter Desktop Plugins
6.1 Plugin列表
- Desktop plugins 桌面端独有plugins
- color_panel 颜色盘选择器
- file_chooser 文件选择器
- menubar 菜单栏控制
- window_size 窗口大小
- flutter_plugins 移动端扩展plugins
- path provider 路径
- url launcher url启动
现在桌面端的Plugins生态还是比较荒芜阶段,也是因为目前还在Alpha阶段,Windows和Linux下面Plugin的支持也不是很好。
7 Github Actions❤️Flutter Desktop
Github Actions是Github又一个真香功能,可以自动化开发、构建、测试和部署,支持多平台 Windows、macOS 和 Linux,支持多语言 Node.js、Python、Java、PHP、C/C++、.NET、Android 和 iOS,也支持容器或虚拟机。重点是免费!!! 免费!!! 免费!!!
目前Github官方对Actions并发任务有一定限制,但是作为日常开源或者个人开发丝毫不影响。
GitHub 计划 | 同时运行的作业总数 | MacOS 作业同时运行的最大数量 |
---|---|---|
免费 | 20 | 5 |
Pro | 40 | 5 |
团队 | 60 | 5 |
企业 | 180 | 50 |
7.1 配置Actions
Flutter Desktop项目配置的关键点有几个
- Flutter环境配置
- 开启Flutter Desktop支持
- Pub Dependency同步
- 运行测试代码
- 生成release包
- 发布生成物
想通这几个关键点,actions写起来就很快了。
name: Flutter Desktop Build CI
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
jobs:
build:
runs-on: macos-latest
steps:
- uses: actions/checkout@v2
- uses: subosito/flutter-action@v1
with:
channel: 'dev'
# config enable macos
- run: flutter config --enable-macos-desktop
- name: Install dependencies
run: flutter pub get
# 运行测试
- name: Run tests
run: pub run test
# 编译release版本
- name: Build products
run: flutter build macos -v --release
# 压缩app
- name: Compress artifacts
run: cd build/macos/Build/Products/Release && tar -jcvf out.tar.bz2 out.app
# 上传生成物
- name: Archive production artifacts
uses: actions/upload-artifact@v1
with:
name: out.tar.bz2
path: build/macos/Build/Products/Release/out.tar.bz2
如果需要自动发布到Repo的Release,可以改一下触发规则,然后生成物后面再加上一段就行,大家可以自行Google搜索。