版本号命名规则

版本号的格式为 X.Y.Z(又称 Major.Minor.Patch),递增的规则为:

  • X 表示主版本号,当 API 的兼容性变化时,X 需递增。
  • Y 表示次版本号,当增加功能时(不影响 API 的兼容性),Y 需递增。
  • Z 表示修订号,当做 Bug 修复时(不影响 API 的兼容性),Z 需递增。

详细的规则如下:

  • X, Y, Z 必须为非负整数,且不得包含前导零,必须按数值递增,如 1.9.0 -> 1.10.0 -> 1.11.0
  • 0.Y.Z 的版本号表明软件处于初始开发阶段,意味着 API 可能不稳定;1.0.0 表明版本已有稳定的 API。
  • 当 API 的兼容性变化时,X 必须递增,Y 和 Z 同时设置为 0;当新增功能(不影响 API 的兼容性)或者 API 被标记为 Deprecated 时,Y 必须递增,同时 Z 设置为 0;当进行 bug fix 时,Z 必须递增。
  • 先行版本号(Pre-release)意味该版本不稳定,可能存在兼容性问题,其格式为:X.Y.Z.[a-c][正整数],如 1.0.0.a1,1.0.0.b99,1.0.0.c1000。
  • 开发版本号常用于 CI-CD,格式为 X.Y.Z.dev[正整数],如 1.0.1.dev4。
  • 版本号的排序规则为依次比较主版本号、次版本号和修订号的数值,如 1.0.0 < 1.0.1 < 1.1.1 < 2.0.0;对于先行版本号和开发版本号,有:1.0.0.a100 < 1.0.0,2.1.0.dev3 < 2.1.0;当存在字母时,以 ASCII 的排序来比较,如 1.0.0.a1 < 1.0.0.b1。
  • 注意:版本一经发布,不得修改其内容,任何修改必须在新版本发布!

一些修饰的词

  • alpha:内部版本
  • beta:测试版
  • demo:演示版
  • enhance:增强版
  • free:自由版
  • full version:完整版,即正式版
  • lts:长期维护版本
  • release:发行版
  • rc:即将作为正式版发布
  • standard:标准版
  • ultimate:旗舰版
  • upgrade:升级版
<think>我们正在讨论Android应用版本号命名规则。根据引用[1]和引用[4],我们可以总结如下: Android应用版本号通常由两部分组成:VersionCode(版本代码)和VersionName(版本名称)。 1. **VersionCode(版本代码)**: - 是一个整数(例如:1, 2, 3, ...)。 - 每次发布新版本时必须递增,用于应用商店和系统判断版本新旧。 - 用户不可见,主要用于内部开发和版本控制。 2. **VersionName(版本名称)**: - 是一个字符串,通常采用“主版本号.次版本号.维护版本号”的形式(例如:1.0.0)。 - 用户可见,用于向用户展示版本信息。 - 命名规则通常遵循语义化版本控制(Semantic Versioning): - **主版本号(major)**:当进行不兼容的API更改时增加。 - **次版本号(minor)**:当以向后兼容的方式添加功能时增加。 - **维护版本号(maintenance/patch)**:当进行向后兼容的错误修复时增加。 - 有时还会在末尾添加构建版本(build)或预发布版本信息(如1.0.0-beta),但正式发布版本通常只包含三个数字。 在Android项目的`build.gradle`文件中,可以这样设置版本信息: ```groovy android { defaultConfig { versionCode 1 // 内部版本号,整数 versionName "1.0.0" // 用户可见的版本名称 } } ``` ### 注意事项 - **递增规则**:每次发布新版本时,`versionCode`必须比上一个版本大,而`versionName`则根据更新内容按语义化规则调整[^1][^4]。 - **预发布版本**:测试版本可在`versionName`后添加后缀(如`1.0.0-beta`),但正式版本应移除后缀[^4]。 - **兼容性**:版本号变更需考虑API兼容性,避免用户因不兼容更新导致体验问题[^1]。 §§相关问题§§ 1. 如何在Android Studio中查看当前应用的版本信息? 2. 如何处理应用版本升级时的数据迁移? 3. 版本号命名规则在iOS和Android平台有何差异? </think>### Android应用版本号命名规则详解 Android应用版本号包含两个关键部分:**版本代码(VersionCode)**和**版本名称(VersionName)**,两者在应用开发和管理中扮演不同角色。 --- #### 1. **版本代码(VersionCode)** - **定义**:整数型标识符,**仅供系统识别**,用户不可见 - **命名规则**: - 每次发布新版本**必须递增**(通常递增1) - 用于应用商店判断版本新旧关系 - 必须是**正整数**(如:1, 2, 3...) - **示例**: ```gradle // build.gradle中配置 android { defaultConfig { versionCode 42 // 当前版本代码 } } ``` --- #### 2. **版本名称(VersionName)** - **定义**:字符串标识符,**用户可见**的版本显示 - **标准命名规则**: - 采用**语义化版本控制**格式:`主版本号.次版本号.维护版本号` - **主版本号(major)**:重大功能变更或不兼容更新时递增 - **次版本号(minor)**:功能性更新时递增 - **维护版本号(maintenance/patch)**:问题修复和小优化时递增 - **扩展格式**(可选): - 添加预发布标识:`1.3.0-beta` - 添加构建元数据:`2.1.5+20230415` - **示例配置**: ```gradle versionName "3.2.1" // 主版本3, 次版本2, 维护版本1 ``` --- #### 3. **最佳实践原则 1. **递增逻辑一致性** - 每次发布新版本必须提升`versionCode` - `versionName`按更新性质递增对应部分 - 重大更新:`2.0.0` → `3.0.0`(主版本+1) - 新增功能:`3.1.5` → `3.2.0`(次版本+1) - Bug修复:`3.2.0` → `3.2.1`(维护版本+1)[^1][^4] 2. **预发布版本标记** ```gradle // 测试版示例 versionName "1.0.0-beta" // 正式版需移除后缀 versionName "1.0.0" ``` 3. **文件命名规范** - APK文件建议包含版本名:`AppName_v3.2.1.apk` - 图标资源按分辨率分类(如`hdpi`, `xhdpi`)[^2] --- #### 4. **技术实现位置 在Android项目的`build.gradle`中定义: ```gradle android { defaultConfig { versionCode 42 // 内部版本代码 versionName "3.2.1" // 用户可见版本名 } } ``` > ⚠️ 注意:`versionCode`必须大于前版才能在应用商店更新[^4] --- ### 版本号管理建议 | 更新类型 | 版本代码变化 | 版本名称变化 | |----------------|--------------|-------------------| | 重大架构更新 | +10~100 | X.0.0 (X+1) | | 新功能发布 | +1 | X.Y.0 (Y+1) | | 紧急Bug修复 | +1 | X.Y.Z (Z+1) | | 测试版 | +1 | 添加 -beta/-rc 后缀 |
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值