Flutter-OH 升级指导

Flutter-OH 升级指导

欢迎大家 加入跨平台开发者社区

适用于基于 OpenHarmony 适配的 Flutter 版本,帮助你在 鸿蒙 Flutter 项目 上做版本切换、迁移与日常维护。请按 当前版本 → 目标版本 对照执行。


阅读导航

章节 内容
[一、版本与分支](#章节 内容 一、版本与分支 支持的 OH 版本、分支、配套 API / DevEco 二、升级场景 小版本 / 大版本 / 跨平台 三、升级前准备 清单、拉取 SDK、环境变量 四、通用升级流程 doctor、清理、依赖、ohos、编译 五、分版本注意事项 3.35 / 3.32 / 3.27 / 3.22 等 六、跨平台迁移摘要 从纯 Android/iOS 工程接入 OH 七、问题与交流 Issue 入口) 支持的 OH 版本、分支、配套 API / DevEco
[二、升级场景](#章节 内容 一、版本与分支 支持的 OH 版本、分支、配套 API / DevEco 二、升级场景 小版本 / 大版本 / 跨平台 三、升级前准备 清单、拉取 SDK、环境变量 四、通用升级流程 doctor、清理、依赖、ohos、编译 五、分版本注意事项 3.35 / 3.32 / 3.27 / 3.22 等 六、跨平台迁移摘要 从纯 Android/iOS 工程接入 OH 七、问题与交流 Issue 入口) 小版本 / 大版本 / 跨平台
[三、升级前准备](#章节 内容 一、版本与分支 支持的 OH 版本、分支、配套 API / DevEco 二、升级场景 小版本 / 大版本 / 跨平台 三、升级前准备 清单、拉取 SDK、环境变量 四、通用升级流程 doctor、清理、依赖、ohos、编译 五、分版本注意事项 3.35 / 3.32 / 3.27 / 3.22 等 六、跨平台迁移摘要 从纯 Android/iOS 工程接入 OH 七、问题与交流 Issue 入口) 清单、拉取 SDK、环境变量
[四、通用升级流程](#章节 内容 一、版本与分支 支持的 OH 版本、分支、配套 API / DevEco 二、升级场景 小版本 / 大版本 / 跨平台 三、升级前准备 清单、拉取 SDK、环境变量 四、通用升级流程 doctor、清理、依赖、ohos、编译 五、分版本注意事项 3.35 / 3.32 / 3.27 / 3.22 等 六、跨平台迁移摘要 从纯 Android/iOS 工程接入 OH 七、问题与交流 Issue 入口) doctor、清理、依赖、ohos、编译
[五、分版本注意事项](#章节 内容 一、版本与分支 支持的 OH 版本、分支、配套 API / DevEco 二、升级场景 小版本 / 大版本 / 跨平台 三、升级前准备 清单、拉取 SDK、环境变量 四、通用升级流程 doctor、清理、依赖、ohos、编译 五、分版本注意事项 3.35 / 3.32 / 3.27 / 3.22 等 六、跨平台迁移摘要 从纯 Android/iOS 工程接入 OH 七、问题与交流 Issue 入口) 3.35 / 3.32 / 3.27 / 3.22 等
[六、跨平台迁移摘要](#章节 内容 一、版本与分支 支持的 OH 版本、分支、配套 API / DevEco 二、升级场景 小版本 / 大版本 / 跨平台 三、升级前准备 清单、拉取 SDK、环境变量 四、通用升级流程 doctor、清理、依赖、ohos、编译 五、分版本注意事项 3.35 / 3.32 / 3.27 / 3.22 等 六、跨平台迁移摘要 从纯 Android/iOS 工程接入 OH 七、问题与交流 Issue 入口) 从纯 Android/iOS 工程接入 OH
[七、问题与交流](#章节 内容 一、版本与分支 支持的 OH 版本、分支、配套 API / DevEco 二、升级场景 小版本 / 大版本 / 跨平台 三、升级前准备 清单、拉取 SDK、环境变量 四、通用升级流程 doctor、清理、依赖、ohos、编译 五、分版本注意事项 3.35 / 3.32 / 3.27 / 3.22 等 六、跨平台迁移摘要 从纯 Android/iOS 工程接入 OH 七、问题与交流 Issue 入口) Issue 入口

一、版本与分支

1. 当前常见 Flutter-OH 版本(示意)

具体以 flutter_flutter 仓库标签/分支为准,下表便于选型。

Flutter OH 版本 分支(示例) 状态 说明
3.7.12-ohos dev 稳定 基于 Flutter 3.7.12
3.22.0-ohos br_3.22.0-ohos-1.0.4 稳定 基于 Flutter 3.22.0
3.27.4-ohos br_3.27.4-ohos-1.0.4 主推稳定 基于 Flutter 3.27.x 系适配,适合多数生产场景
3.32.4-ohos oh-3.32.4-dev 预览 基于 Flutter 3.32.4,生产请评估
3.35.7-ohos oh-3.35.7-dev 预览 跟进 Flutter 3.35 系,生产请评估

2. 配套关系

Flutter OH 版本 应用编译 API Engine 构建 API DevEco Studio
3.7.12-ohos OpenHarmony API 18+ API 18+ 5.1.0+
3.22.0-ohos API 18+ API 20+ 5.1.0+
3.27.4-ohos API 18+ API 20+ 5.1.0+
3.32.4-ohos API 18+ API 20+ 5.1.0+
3.35.7-ohos API 18+ API 23+ 6.0.0+

升级到 3.35.7-ohos 时,务必同步升级 DevEcoSDK API,避免编译或链接失败。


二、升级场景

  • 小版本升级:同一大版本线下的 OH 补丁/构建号变化(如 3.27.4-ohos-1.0.x 之间)。
  • 大版本升级:跨 Flutter 主版本(如 3.22 → 3.27 → 3.32),需重点看 Breaking Changes 与插件兼容。
  • 跨平台迁移 :原先只有 Android/iOS 的 Flutter 工程,首次接入 ohos 平台(与「升级 SDK」可合并规划)。

三、升级前准备

1. 检查清单

2. 获取新版本 SDK

bash 复制代码
# 方式 A:直接克隆目标分支
git clone -b <目标分支名> https://gitcode.com/openharmony-tpc/flutter_flutter.git

# 方式 B:克隆后 checkout 指定 tag/分支
git clone https://gitcode.com/openharmony-tpc/flutter_flutter.git
cd flutter_flutter
git checkout <版本 Tag 或分支>

# 示例:3.27.4-ohos 稳定线
git clone -b br_3.27.4-ohos-1.0.4 https://gitcode.com/openharmony-tpc/flutter_flutter.git

3. 环境变量(示例)

bash 复制代码
# Flutter-OH SDK
export FLUTTER_HOME=/path/to/flutter_flutter
export PATH="$FLUTTER_HOME/bin:$PATH"

# OpenHarmony SDK(按本机实际路径)
export OHOS_SDK=/path/to/ohos-sdk
export PATH="$OHOS_SDK/toolchains:$PATH"

# 国内镜像(按团队规范选用)
export FLUTTER_STORAGE_BASE_URL=https://flutter-ohos.obs.cn-south-1.myhuaweicloud.com
export PUB_HOSTED_URL=https://pub.flutter-io.cn

四、通用升级流程

1. 验证环境

bash 复制代码
flutter doctor -v

预期包含 OpenHarmony toolchain 等与鸿蒙相关的通过项;若失败,先回到环境搭建文档排查。

2. 清理(按力度选用)

bash 复制代码
cd your_project

# 常规:清理当前工程构建产物
flutter clean

大版本切换或异常缓存时再考虑:

bash 复制代码
# ⚠️ 会清空全局 pub 缓存,影响本机所有 Flutter 项目,慎用
flutter pub cache clean

# ⚠️ 仅在你确认要重置当前 FLUTTER_HOME 对应 SDK 的引擎缓存时使用
# rm -rf "$FLUTTER_HOME/bin/cache"

3. 使用新 SDK 并确认版本

bash 复制代码
which flutter
flutter --version

4. 更新依赖

pubspec.yaml 中:

  • 调整 environment.sdk / environment.flutter 以匹配目标 OH 版本;
  • 将需原生支持的插件改为 OH 适配的 git 源或版本(见兼容性列表);
  • 执行:
bash 复制代码
flutter pub get

5. 鸿蒙工程(谨慎覆盖)

若从大版本升级或模板结构变化明显,可能需要对齐 ohos/

bash 复制代码
# ⚠️ 可能覆盖你对 ohos 模板的自定义,执行前请提交/备份 git
flutter create --platforms ohos .

然后在 DevEco Studio 中打开 ohos/ 目录,检查 Signing Configs 等配置是否仍有效。

6. 编译与安装验证

bash 复制代码
flutter build hap --debug
flutter build hap --release

HAP 常见路径 (以本机产物为准,可搜索 .hap):

bash 复制代码
# 常见位置(相对 Flutter 项目根目录)
hdc install ohos/entry/build/default/outputs/default/entry-default-signed.hap

hdc -t <device_id> install ohos/entry/build/default/outputs/default/entry-default-signed.hap

五、分版本注意事项

1. 小版本升级

同一 Flutter OH 大版本内:

  1. 更新 SDK 源码或切换到新 Tag;
  2. flutter cleanflutter pub get
  3. 重新 flutter build hap / flutter run 验证。

2. 大版本升级要点

目标版本 OH / 官方变更参考 备注
3.35.7-ohos OH: 3.27 → 3.35 BreakingFlutter 3.35 API 23+DevEco 6+;插件对齐 3.35
3.32.4-ohos Flutter 3.32 插件与 Dart 约束对齐 3.32
3.27.4-ohos OH: 3.22 → 3.27Flutter 3.27 当前常用稳定线之一
3.22.0-ohos OH: 3.7 → 3.22 等说明Flutter 3.22 渲染:Impeller-Vulkan 等默认策略与 3.7 差异大,需充分回归

若某分支下 changelog 路径调整,以仓库内 release-notes/changelog 实际文件名为准。


六、跨平台迁移摘要

仅 Android/iOS 的 Flutter 工程首次接入鸿蒙时,可与「升级到新 OH SDK」一起做。更细的步骤见:已有 Flutter 应用适配鸿蒙平台指导文档

步骤 动作
1 备份工程
2 flutter create --platforms ohos . 或新建多平台工程
3 配置 pubspec.yaml(SDK 约束 + OH 兼容插件 git 源)
4 业务侧增加 Platform.isOhos 等分支(若需要)
5 自研插件在 ohos/ 侧补齐 ArkTS 实现
6 flutter run / flutter build hap

目录结构示意(非 JSON):

text 复制代码
your_project/
├── android/
├── ios/
├── ohos/                 # 新增
├── lib/
├── pubspec.yaml
└── ...

依赖示例refflutter_packages 当前分支为准):

yaml 复制代码
dependencies:
  path_provider:
    git:
      url: "https://gitcode.com/openharmony-tpc/flutter_packages.git"
      path: "packages/path_provider/path_provider"
      ref: "br_path_provider-v2.1.5_ohos"

平台判断示例

dart 复制代码
import 'dart:io';

if (Platform.isAndroid) {
} else if (Platform.isIOS) {
} else if (Platform.isOhos) {
  // OpenHarmony / 鸿蒙
}

七、问题与交流


相关推荐
恋猫de小郭4 小时前
Android 禁止侧载将正式实施,需要等待 24 小时冷静期
android·flutter·harmonyos
FFF-X4 小时前
解决 Flutter Gradle 下载报错:修改默认 distributionUrl
flutter
程序员Ctrl喵1 天前
异步编程:Event Loop 与 Isolate 的深层博弈
开发语言·flutter
前端不太难1 天前
Flutter 如何设计可长期维护的模块边界?
flutter
小蜜蜂嗡嗡1 天前
flutter列表中实现置顶动画
flutter
始持1 天前
第十二讲 风格与主题统一
前端·flutter
始持1 天前
第十一讲 界面导航与路由管理
flutter·vibecoding
始持1 天前
第十三讲 异步操作与异步构建
前端·flutter
新镜1 天前
【Flutter】 视频视频源横向、竖向问题
flutter