HarmonyOS 鸿蒙Next应用的版本号管理有什么规范?

HarmonyOS 鸿蒙Next应用的版本号管理有什么规范? 版本号管理需要遵循语义化版本规范,本文介绍版本号的格式、命名规则、以及如何在 manifest.json 中正确配置版本信息。

3 回复

一、版本号组成

鸿蒙应用有两个版本标识:

字段 说明 示例
versionCode 版本号(整数),用于系统判断新旧 100, 101, 102
versionName 版本名(字符串),用于用户展示 “1.0.0”, “1.0.1”

二、uni-app 项目配置

manifest.json

{
  "versionName": "1.0.0",
  "versionCode": 100,
  
  "app-plus": {
    "distribute": {
      "android": {
        "versionName": "1.0.0",
        "versionCode": 100
      }
    }
  },
  
  "app-harmony": {
    "versionName": "1.0.0",
    "versionCode": 100
  }
}

三、版本号命名规范

推荐格式:主版本.次版本.修订版本

X.Y.Z

X = 主版本号(重大更新、不兼容改动)

Y = 次版本号(新功能、向下兼容)

Z = 修订版本号(Bug修复、小改动)

示例演进

版本 versionName versionCode 说明
首发 1.0.0 100 初始版本
修复Bug 1.0.1 101 小修复
新功能 1.1.0 110 添加新功能
大改版 2.0.0 200 重大更新

四、versionCode 编码建议

方式1:简单递增

100 → 101 → 102 → 103

方式2:与 versionName 对应

versionName: 1.0.0 → versionCode: 10000

versionName: 1.0.1 → versionCode: 10001

versionName: 1.1.0 → versionCode: 10100

versionName: 2.0.0 → versionCode: 20000

公式:X * 10000 + Y * 100 + Z

方式3:日期编码

versionCode: 20241226 // 2024年12月26日发布

五、华为应用市场要求

强制规则

versionCode 必须递增 - 新版本必须大于已上架版本

不能回退 - 一旦上架 102,就不能再上架 101

整数类型 - versionCode 必须是正整数

建议规则

versionName 使用语义化版本(Semantic Versioning)

保持 versionCode 和 versionName 的对应关系

预留版本号空间(别从1开始,从100开始)

六、多渠道版本管理

如果同时发布 Android 和鸿蒙版本:

{
  "versionName": "1.0.0",
  "versionCode": 100,
  
  "app-plus": {
    "distribute": {
      "android": {
        "versionName": "1.0.0",
        "versionCode": 100
      }
    }
  },
  
  "app-harmony": {
    "versionName": "1.0.0",
    "versionCode": 100
  }
}

建议:Android 和鸿蒙使用相同的版本号,便于管理。

七、代码中获取版本号

// 获取版本信息
const getAppVersion = () => {
  // #ifdef APP-PLUS || APP-HARMONY
  return {
    versionName: plus.runtime.version,
    versionCode: plus.runtime.versionCode
  }
  // #endif
  
  // #ifdef H5
  return {
    versionName: '1.0.0',
    versionCode: 100
  }
  // #endif
}

// 使用
const version = getAppVersion()
console.log(`当前版本:${version.versionName} (${version.versionCode})`)

八、版本更新检测

// 检查更新
async function checkUpdate() {
  const currentCode = plus.runtime.versionCode
  
  // 从服务器获取最新版本
  const res = await uni.request({
    url: 'https://api.xxx.com/app/version'
  })
  
  const latestCode = res.data.versionCode
  const latestName = res.data.versionName
  const downloadUrl = res.data.downloadUrl
  
  if (latestCode > currentCode) {
    uni.showModal({
      title: '发现新版本',
      content: `新版本 ${latestName} 已发布,是否更新?`,
      success: (res) => {
        if (res.confirm) {
          // 跳转应用市场或下载
          plus.runtime.openURL(downloadUrl)
        }
      }
    })
  }
}

九、版本号管理最佳实践

  1. 建立版本日志

版本记录

v1.0.1 (101) - 2024-12-26

  • 修复:签到页面闪退问题
  • 优化:首页加载速度

v1.0.0 (100) - 2024-12-20

  • 首次发布
  • 功能:健康记录、签到、知识库
  1. 自动化版本管理
// package.json
{
  "version": "1.0.0",
  "scripts": {
    "version:patch": "npm version patch && node scripts/sync-version.js",
    "version:minor": "npm version minor && node scripts/sync-version.js",
    "version:major": "npm version major && node scripts/sync-version.js"
  }
}
  1. 版本号同步脚本
// scripts/sync-version.js
const fs = require('fs')
const pkg = require('../package.json')
const manifest = require('../manifest.json')
const [major, minor, patch] = pkg.version.split('.').map(Number)
manifest.versionName = pkg.version
manifest.versionCode = major * 10000 + minor * 100 + patch
fs.writeFileSync('./manifest.json', JSON.stringify(manifest, null, 2))
console.log(`版本已同步: ${manifest.versionName} (${manifest.versionCode})`)

快速参考

场景 versionName versionCode
首次发布 1.0.0 100 或 10000
Bug修复 1.0.1 101 或 10001
小功能更新 1.1.0 110 或 10100
大版本更新 2.0.0 200 或 20000

核心原则:

versionCode 只能增不能减

versionName 用语义化版本

保持两者对应关系

预留版本号空间

更多关于HarmonyOS 鸿蒙Next应用的版本号管理有什么规范?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


HarmonyOS Next应用版本号管理遵循语义化版本规范,格式为主版本号.次版本号.修订号。主版本号更新表示不兼容的API变更,次版本号更新表示向下兼容的功能新增,修订号更新表示向下兼容的问题修复。版本号需在AppGallery Connect中统一管理,与应用包和上架流程关联。

在HarmonyOS Next应用开发中,版本号管理遵循**语义化版本(Semantic Versioning)**规范,以确保版本迭代的清晰性和一致性。以下是核心规范要点:

1. 版本号格式

版本号格式为:主版本号.次版本号.修订号MAJOR.MINOR.PATCH),例如 1.2.3

  • 主版本号(MAJOR):不兼容的API修改或重大更新时递增。
  • 次版本号(MINOR):向下兼容的功能性新增时递增。
  • 修订号(PATCH):向下兼容的问题修复时递增。

2. 命名规则

  • 版本号必须为非负整数,禁止以 0 开头(如 01)。
  • 禁止在数字间添加空格、字母或特殊字符(如 1.0.0-beta 需通过其他字段管理预发布版本)。
  • 应用市场可能对版本号有额外约束(如递增要求),需参考具体平台规则。

3. 在 manifest.json 中配置

在应用的 manifest.json 文件中,需在 "app" 字段下配置 "versionName""versionCode"

  • versionName:字符串类型,对应用户可见的语义化版本(如 "1.0.0")。
  • versionCode:整数类型,用于应用市场内部版本管理,需随更新严格递增。

示例配置:

{
  "app": {
    "versionName": "1.0.0",
    "versionCode": 1
  }
}

4. 注意事项

  • 版本号唯一性:每次发布新版本时,versionCode 必须增加,且不可重复使用旧值。
  • 兼容性声明:若更新涉及API不兼容变更,需同步更新文档或通过 "apiVersion" 字段声明平台兼容性。
  • 预发布版本(如Alpha/Beta)建议通过 versionName 后缀标识(如 "1.0.0-beta.1"),但需确保符合应用市场审核要求。

遵循上述规范可避免版本混乱,并保障应用在分发、更新时的稳定性。

回到顶部