关于 FVM
FVM(Flutter Version Management)是一个命令行工具,用于管理多个 Flutter 版本和通道。它允许开发者在不同的 Flutter 项目之间快速切换版本,而无需每次都下载和配置新的 Flutter SDK。
官方网站: https://fvm.app
功能
- 版本管理:允许用户安装、切换和管理多个Flutter SDK版本,并支持 Flutter Forks。
- 通道管理:支持Flutter的稳定、测试和开发通道。
- 缓存管理:FVM会缓存已下载的Flutter SDK版本,减少重复下载。
- 项目配置:可以为每个Flutter项目指定使用的SDK版本。
- 命令行工具:提供了一系列命令行工具,方便用户进行操作。
- 全局模式:可以设置一个全局默认的Flutter版本。
- 版本检查:检查Flutter版本是否为最新,并提供更新选项。
优点
- 快速切换:在不同项目之间快速切换Flutter版本,提高开发效率。
- 节省空间:通过缓存机制,避免重复下载相同的Flutter SDK版本,节省磁盘空间。
- 自定义版本:可以为每个项目定制化Flutter版本,满足不同项目的需求。
- 易于集成:可以轻松集成到现有的Flutter开发流程中。
- 减少依赖:通过管理Flutter版本,减少对环境变量的依赖,降低环境配置的复杂性。
- 跨平台:支持Windows、macOS和Linux平台。
安装 FVM
具体详情请根据自己的 OS 来安装, 官方文档:
https://fvm.app/documentation/getting-started/installation
使用
鸿蒙 Flutter SDK
当前鸿蒙化的 Flutter 版本有 3.7 和 3.22 两个, 均托管于 Gitee, 如下
克隆 SDK 到本地
使用 FVM 托管 flutter forks, 需要将仓库克隆到 FVM 缓存目录, 并以 custom_
为前缀命名文件夹
FVM 缓存目录可自行环境变量 FVM_CACHE_PATH
, 若不配置,则默认在 /Users/{user}/fvm/versions
示例(3.7 版本):
cd ~/fvm/versions # 进入缓存目录
git clone -b dev https://gitee.com/openharmony-sig/flutter_flutter.git custom_3.7-ohos # 克隆 SDK 仓库(dev 分支)
克隆完毕后, 执行 fvm list
, 将会看 custom_3.7-ohos
出现在版本列表中
使用 SDK
SDK 下载到缓存目录以后, 可用 FVM 来创建项目
示例:
# 1.创建项目目录并进入
mkdir -p ~/Project/mobile/sdk_test
cd ~/Project/mobile/sdk_test
# 2. 使用自定义 SDK
# 由于此时项目目录是空的,可能会提示是否继续, 一路 yes 即可
fvm use custom_3.7-ohos
# 3. 创建项目, 不要忽略最后的那个 "." 哦
fvm flutter create --platforms=ohos --project-name sdk_test .
如上示例仅针对全新的项目, 如果是已有项目, 直接执行第二步即可
IDE / 编辑器配置
羡慕创建以后, 目录中会出现 .fvm
(软链接到 SDK 实际位置) 和 .fvmrc
(配置文件)
执行 tree -L 2 .fvm
(仅参考)
.fvm
├── flutter_sdk -> /Users/yeliulee/fvm/versions/custom_3.7-ohos
├── fvm_config.json
├── release
├── version
└── versions
└── custom_3.7-ohos -> /Users/yeliulee/fvm/versions/custom_3.7-ohos
可发现, 其中 .fvm/flutter_sdk
和 .fvm/versions
下的文件均软链接到 SDK 实际缓存位置, 复用
VSCode
在项目目录下的 .vscode/settings.json
里配置 SDK 位置即可,示例如下
{
"dart.flutterSdkPath": ".fvm/versions/custom_3.7-ohos", # 也可以是 `.fvm/flutter_sdk`
"dart.addSdkToTerminalPath": true, # 表示将当前 SDK 添加到 VSCode 集成终端的 PATH
"dart.env": {
"PUB_HOSTED_URL": "https://pub.flutter-io.cn" # 根据情况设置(国内推荐)
},
}
IDEA / AS
直接在模块设置的弹窗里选择 SDK 即可, 位置同上