从开发到上架:Flutter App 三端适配鸿蒙、iOS、Android 全流程经验分享
一套 Flutter 代码,三端上线。本文记录如何将同一个 Flutter 项目,成功上架到 鸿蒙应用市场、App Store、Android 应用市场 的全过程,包括版本选择、环境管理、适配问题与上架经验。
我一直想尝试开发鸿蒙 App,刚好自己熟悉 Flutter,而 Flutter 现在也支持鸿蒙开发。于是趁这个机会,我从 0 到 1 开发了一款 App,不仅上架到了鸿蒙应用市场,还同步发布到 App Store 和各大 Android 市场。整个过程也让我顺便体验了一下鸿蒙版 Flutter 的成熟度,于是就把这段经历记录下来
🚀 成果展示
这三个市场的上架难度:鸿蒙 > Android > iOS
PS:上架难度大,某种意义上说明商店对 App 的质量要求比较高,对用户来说是好事,对开发者就比较折磨了
🪪 上架前置条件
在正式上架前,需要准备以下材料:
- ✅ 软件著作权(电子软著)
- ✅ App 备案
- ✅ 隐私政策与用户协议
- ✅ 开发者账号(Apple / 应用市场 / 华为)
⚠️ 这些东西都是需要提前准备的,虽然申请难度不大,但是比较花时间
🧱 技术选型与版本选择
我在开发时选择的 Flutter 版本如下:
| 平台 | Flutter 版本 | 说明 |
|---|---|---|
| Android / iOS | 3.32.8 | stable |
| 鸿蒙 | 鸿蒙 3.32.4 (dev) | dev |
鸿蒙的 Flutter 稳定版是 3.22.0,这里没有选择稳定版的原因是:
- 希望保持语法和生态的一致性
- 方便多端同步升级
- 减少分支和平台差异代码
🔧 使用 FVM 管理 Flutter 版本
FVM(Flutter Version Management)让多个项目可以独立使用不同的 Flutter SDK 版本。
好处:
- 不会污染全局环境
- 多项目共存更轻松
配置参考:www.cnblogs.com/shaohushuo/…
🧭 使用 Git Worktree 管理多平台仓库
多平台项目(尤其是鸿蒙 + Android)在同一个仓库中维护时,git worktree 是非常实用的工具。
优点:
- 不同分支在本地是两个文件夹,本地环境不会因为频繁切换分支搞乱
- Flutter 主工程与鸿蒙工程可以共用同一代码库
🤖 开发中使用的 AI 工具
这次开发我大量使用了 AI 辅助开发,效率非常高:
| 工具 | 用途 |
|---|---|
| Cursor / Codex | 辅助写代码、调试问题 |
| ChatGPT、即梦 | 生成 App 图标、插画素材 |
有了 AI 辅助,开发效率是真的提升太多。主流 AI 工具都值得试用,最后选一个自己习惯的就好
⚙️ 鸿蒙 SDK 适配与踩坑记录
在切换到鸿蒙 SDK 后,花了不到 1 天时间就适配完成,整个过程还是很容易的,但是我这个是新项目,旧项目还要考虑插件适配问题,可能就不止这么点时间了
相关参考:
这里说几个需要注意的:
- 在依赖第三方库的时候,一定要注意看有没有适配鸿蒙 已适配列表
- 虽然我的项目使用鸿蒙 flutter dev 版本暂时没问题,但是这可能只是暂时没发现问题,不代表就真的没问题。鸿蒙 Flutter 稳定版情况,可以关注官方仓库 鸿蒙 Flutter 仓库
- 我的项目使用了 sqflite,同样的代码,在 Android 和 iOS 上没问题,但是在鸿蒙上出现 ⚠️
XComFlutterOHOS_Native: flutter settings log message: [DB] Raw update failed: DatabaseException(error code:14800021。SQLite: Generic error.)这样的错误提示。后来发现,是有一些语法不兼容,更换写法后解决:✅await db.update(table, data, where: 'id = ?', whereArgs: [anchor.id]);改成return await db.insert(table, data, conflictAlgorithm: ConflictAlgorithm.replace);
工具推荐
| 工具 | 用途 |
|---|---|
| icon.kitchen | 一键生成多平台图标 |
| App Mockup Studio | 生成商店截图展示图 |
| iLoveIMG | 在线修改图片尺寸 |
💭 总结与思考
- Flutter 的三端上架是完全可行的
- 鸿蒙生态正在快速完善
- AI 工具的加入,让开发和设计效率都有质的提升
“这次三端上架的过程,是一次技术的融合实验,也是一段探索之旅。希望我的经验能帮到下一个想尝试多端上架的 Flutter 开发者。”
👋 如果你觉得有帮助,可以点赞或收藏支持一下,也欢迎在评论区交流你的 Flutter 上架经历!