flutter build hap --release` 后版本号被改回 1.0.0

flutter build hap --release 后版本号被改回 1.0.0?

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

背景

在工程里改好了鸿蒙侧应用版本(常见位置是 ohos/AppScope/app.json5 ;部分文档或工具里也会口语说成 app.json),其中的 版本名称 (对应 version 里的 name)是你期望的值。随后执行:

bash 复制代码
flutter build hap --release

出包后再打开同一份配置文件,发现版本又被写回 1.0.0 (或与 pubspec.yaml 里一致的基础版本)。

现象

  • 手动改的 版本名 / 版本号 在 Release 构建后丢失或被覆盖。
  • 反复构建时,版本似乎总跟着某处「默认来源」走,而不是保留你在 OH 工程里的手工编辑。

原因(机制说明)

当前 Flutter OpenHarmony 出包流程里,构建会用 pubspec.yaml 中的 version(以及可选的构建参数)去同步/写回鸿蒙应用配置 ,而不是以「仅存在于 app.json5 里、且未在 Dart 侧声明」的修改为准。

因此:

  • 若 pubspec.yaml 仍是默认的 version: 1.0.0+1 之类,构建后 OH 侧展示版本很容易被同步成 1.0.0。
  • 只改 app.json5、不改 pubspec.yaml 也不在命令行指定版本时,下一次 flutter build hap 仍可能按上述规则覆盖,看起来像「字段被重置」。

解决办法

1. 在 pubspec.yaml 中维护版本(推荐日常开发)

与 Android/iOS 习惯一致,在根目录 pubspec.yaml 中写:

yaml 复制代码
version: 4.0.3+10000

即 版本名+版本号 (+ 后为 versionCode 类递增数字)。再执行 flutter build hap,构建产物会与之一致,避免和手工改 OH 文件「打架」。

2. 构建命令行临时指定(适合 CI / 单次出包)

不改文件时,可在构建时显式传入:

bash 复制代码
flutter build hap --release --build-name=4.0.3 --build-number=10000
  • --build-name:对应对外展示的版本名称(如 4.0.3)。
  • --build-number:对应递增的构建号 / 数字版本(如 10000)。

流水线里建议固定用同一套规则(读环境变量或标签)传入这两个参数,避免每次本地默认值覆盖。

3. 不要依赖「只改 OH 目录、不改 Dart 工程版本」

若团队规范是「以 Flutter 工程为准」,应把 唯一真相源 放在 pubspec.yaml 或 CI 传入的 --build-name / --build-number,而不是只改 app.json5。

小结

做法 说明
改 pubspec.yaml 的 version 与 flutter build hap 默认逻辑一致,推荐
使用 --build-name / --build-number 适合脚本与发布流水线
只改 ohos/AppScope/app.json5 易被后续构建覆盖,需配合上述其一

参考命令:

bash 复制代码
flutter build hap --release --build-name=4.0.3 --build-number=10000
相关推荐
恋猫de小郭3 小时前
Android CLI 支持 AI Agent 通过 Device Streaming 调试云真机
android·前端·flutter
m0_7381858220 小时前
Flutter 鸿蒙化实战:flutter_scankit 适配 OpenHarmony,华为 ScanKit 扫码
flutter·华为·harmonyos·鸿蒙
事圆则缓1 天前
Flutter 开发鸿蒙实战:从 OpenHarmony 适配版到 HAP 构建与插件接入
flutter·华为·harmonyos
天空之城--1 天前
Android一周动态:Android 18首次官宣、Compose Material3 1.4转正(5趋势+5资讯)
android·人工智能·flutter·架构·android jetpack
恋猫de小郭1 天前
Meta 分享怎么用 AI 迁移 Compose 项目不烧心
android·前端·flutter
EatFan1 天前
Flutter 鸿蒙适配实践 2026:从环境搭建、混合渲染到 OpenTelemetry 性能基建
flutter·华为·harmonyos·openharmony·opentelemetry·鸿蒙适配·impeller
m0_738185821 天前
Flutter 鸿蒙化实战:flutter_secure_storage 适配 OpenHarmony,敏感数据安全存储
安全·flutter·华为·harmonyos·鸿蒙
传奇开心果编程2 天前
【现代声明式UI学与练】第1课 从命令式UI到声明式UI
学习·flutter·ui·swiftui·react·android jetpack
m0_738185822 天前
Flutter 鸿蒙化实战:flutter_nfc_kit 适配 OpenHarmony,NFC 读写一步到位
flutter·华为·harmonyos·鸿蒙
恋猫de小郭2 天前
KMP 又改了编译流程, Separate Compilation 禁止了 `commonMain` 的依赖穿透
android·前端·flutter