最后核验:2026-09-04
本篇结论
iOS、Android 是 Flutter 官方支持的移动平台;HarmonyOS NEXT/OpenHarmony 需要 Flutter-OH 适配。正确方案是共享业务源码,但使用两条 SDK 与构建轨道。
学完你能做到
- 区分 Flutter 官方支持与社区平台适配。
- 理解 HarmonyOS、HarmonyOS NEXT 和 OpenHarmony 在本教程里的范围。
- 看懂本课程的双 SDK 构建策略。
- 判断“支持鸿蒙”应该如何验收。
01 先把“鸿蒙”说清楚
日常语境中的“鸿蒙”可能指向不同环境:
- 仍能运行 Android 应用的历史 HarmonyOS 设备。
- 不再依赖 Android 应用兼容层的 HarmonyOS NEXT。
- 开源项目 OpenHarmony。
本教程所说的鸿蒙支持,特指:
使用 Flutter-OH 构建面向 HarmonyOS NEXT/OpenHarmony 的应用。
如果目标设备能够直接安装 Android APK,那仍属于 Android 构建结果,不算本教程要解决的 Flutter-OH 适配。
02 官方 Flutter 支持到哪里
Flutter 官方支持平台页面列出了 iOS 与 Android,并给出对应系统和架构范围。OpenHarmony 不在这份官方支持列表中。
这意味着:
- iOS、Android 问题可以先查 Flutter 官方文档和 Flutter 仓库。
- OpenHarmony 问题需要继续检查 Flutter-OH 的版本、文档、Issue 和插件适配。
- 上游 Flutter 新功能不能默认认为已经进入 Flutter-OH。
03 两条 SDK 轨道
本教程采用下面的构建关系:
共享 Git 仓库
├── lib/ Dart 业务、状态与界面
├── test/ 共享测试
├── ios/ iOS Runner
├── android/ Android Runner
└── ohos/ OpenHarmony 工程
Flutter upstream
└── build iOS / Android
Flutter-OH
└── build HarmonyOS NEXT / OpenHarmony
共享同一个仓库,不等于让同一套 Flutter SDK 构建三个平台。Flutter-OH 官方项目也建议其他平台优先使用 Flutter 上游 SDK,以获得及时的上游修复。
04 版本怎么选
版本选择遵循四条规则:
- 不使用
master或开发分支作为教学基线。 - iOS、Android 固定一个 Flutter 上游稳定版本。
- 鸿蒙固定一个 Flutter-OH 稳定 Tag。
- Dart 语法和依赖约束以两条轨道都能接受的范围为准。
举例:如果 Flutter 上游版本比 Flutter-OH 更新,就不能因为上游已经提供某个 API,直接在共享代码里使用它。应该先确认 Flutter-OH 对应版本是否存在该 API。
05 插件是最大的现实差异
纯 Dart 包不包含 iOS、Android 或 OpenHarmony 的原生实现,但仍然要核对它声明的 Dart SDK 范围,并在两条 SDK 轨道分别运行测试。只有两边测试都通过,课程才把它列为共享依赖。
插件则需要逐项确认:
- 插件是否声明
ios、android、ohos实现。 - Flutter-OH 适配仓库是否有对应版本。
- 适配分支是否仍在维护。
- 示例是否真正构建过,而不是只有占位目录。
- 三端行为是否一致,是否需要功能降级。
课程不会用“pub.dev 能安装”代替“鸿蒙可用”。每个原生能力都会进入插件兼容矩阵。
Flutter 或插件维护方声明 Android 支持,也不代表依赖 Google Play 服务的功能能在中国大陆常见设备环境中工作。本课程选择插件和云服务时,会基于官方一手资料分开核对:
- Flutter 插件是否支持 Android。
- 插件是否强依赖 Google Play 服务。
- 没有 Google Play 服务时,核心功能是否可用或能够降级。
- 是否需要国内厂商 SDK,以及该 SDK 是否继续支持 iOS、Android 和鸿蒙目标。
- 服务账号、控制台、短信、支付或应用商店是否对大陆开发者提供可执行的注册路径。
因此,后续的“Android 支持”分为两层:平台或插件维护方的一手资料声明,以及课程在 Android 模拟器或构建链上的实际结果。当前 Spark 已完成 Android 16 模拟器运行、基础交互、热重载、debug APK 和使用模板调试密钥的 release AAB 构建;这仍不能替代无 GMS 大陆真机、具体插件、发布签名和应用商店流程的逐项验证。“三端支持”也不会被笼统写成三端能力完全等价。
06 什么才算支持鸿蒙
至少满足以下条件,课程才会把功能标记成“已支持”:
- Flutter-OH 能完成 HAP 构建。
- 应用能安装并启动。
- 核心页面、数据和交互在真机运行。
- 相关原生插件已经实际验证。
- 不支持的能力具有明确降级行为。
仅通过静态分析、仅有 ohos 目录、或只在 README 声明兼容,都不算验证完成。
常见问题
Flutter-OH 是 Google Flutter 的一个官方 target 吗
不是。它是基于 Flutter SDK 和 Engine 的 OpenHarmony 兼容扩展,由独立社区维护。
能否只安装 Flutter-OH,然后构建三个平台
本课程不采用这种方式。按照课程命令操作时,iOS、Android 使用上游 Flutter,鸿蒙使用 Flutter-OH;每次构建前都要核对实际生效的 SDK 路径和版本。
三端界面是否应该完全一致
不应该把完全一致作为目标。数据与任务流程应一致,导航、返回、弹窗、权限等行为应符合平台习惯。
完成检查
- 我知道 OpenHarmony 不在 Flutter 官方支持平台列表中。
- 我能解释为什么课程需要两条 SDK 轨道。
- 我不会把成功安装依赖当成插件已支持鸿蒙。
- 我知道鸿蒙能力必须通过 HAP 构建和真机流程验证。