TapCub 正式上线:统计、分析、客服一个平台免费用
数据分析

App 版本管理:做法和版本对比方法

App 版本管理详解:版本号和构建号、App 的语义化版本、九个做法、每次发布要对比什么,以及一个分阶段发布的示例。

陈屿 发布于 2026 年 11 月 6 日 4 分钟阅读 数据分析
App 版本管理:做法和版本对比方法示例数据

用你自己的数据试一下

这篇文章里出现的报表免费版全都有。一段代码,网站和 App 都能接,最多 10 个站点。

免费开始

App 版本管理是给移动 App 的发布编号和跟踪:一个给用户看的版本号,加一个一直递增的构建号。本文把语义化版本套用到 App 上,列出九个做法,说明版本之间该对比哪些指标,并用一次分阶段发布演示:崩溃退步在只覆盖 10% 用户时就被发现了。

读完你会知道

  • 版本号和构建号分开
  • iOS 和 Android 用同一个版本号
  • 每个事件和崩溃都带上 App 版本
  • 分阶段发布,盯住无崩溃用户占比
  • 规定最低支持版本

什么是 App 版本管理?

App 版本管理(App Versioning)是给移动 App 的每次发布编号、跟踪的一套规则。每个版本都有两个标识:用户在商店和设置里看到的版本号(比如 4.2.1),以及每次上传都必须递增的内部构建号。iOS 上是 CFBundleShortVersionString 和 CFBundleVersion;Android 上是 versionName 和 versionCode。

好的版本管理让团队的发布有章可循,让用户和客服知道某人用的是哪个构建,也让统计能按版本对比行为、崩溃和留存。

App 的语义化版本

大多数团队会改用语义化版本(SemVer):主版本.次版本.修订号。

部分什么时候加例子
主版本大改版、对数据或账户有不兼容的改动、新的付费档4.0.0 → 5.0.0
次版本新功能,原有行为不变4.2.0 → 4.3.0
修订号修 bug 和小改进4.3.0 → 4.3.1

SemVer 原本是给软件库写的,「不兼容」指 API 不兼容。对 App 来说,团队通常把主版本当作市场或改版的里程碑,而不是严格的规则。也有团队用日历版本(比如 2026.11.1),一眼就能看出发布日期。

App 版本管理的做法

  1. 版本号和构建号分开。 构建号一直递增;版本号按你的规则走。
  2. 同样的功能集,iOS 和 Android 用同一个版本号。 即使构建号不同,客服和对比也更简单。
  3. 在持续集成里自动生成构建号。 用流水线编号或时间戳,一直不会撞号。
  4. 每次发布都在代码库打标签。 有 v4.3.1 这样的标签,很容易找到崩溃对应的代码。
  5. 每个版本写更新说明。 商店里写给用户,内部写给团队。
  6. 每个统计事件和崩溃都带上版本号。 没有它,就没法对比版本。
  7. 分阶段发布。 先发给一部分用户,看无崩溃用户占比没问题再扩大。
  8. 规定最低支持版本。 旧版本和服务端改动不兼容时,强制或提示更新,并跟踪还有多少人停留在旧版本。
  9. 紧急修复用修订号发布。 让大家看得出这次只修了 bug,没加新功能。

怎样对比 App 版本

每个新版本发布后的头几天、头几周,和上一个版本对比:

指标为什么
该版本占活跃用户的比例更新的普及速度
无崩溃用户占比稳定性有没有退步
ANR 率(Android)和卡死(iOS)响应速度有没有退步
冷启动时间性能有没有退步
核心操作率和漏斗转化改动对产品的影响
新用户次日留存对新用户首次体验的影响

要同类比同类:早早更新的用户往往更活跃,所以除了全部用户,也要看各版本上新获取的用户。

平台版本号构建号
iOSCFBundleShortVersionStringCFBundleVersion
AndroidversionNameversionCode
Flutterversion: 4.3.1+……+build
React Native在各原生工程里设置在各原生工程里设置

每次上传商店,构建号都必须递增。

计算示例:发现一次退步

某外卖 App(示例数据)把 7.4.0 发给 10% 的 Android 用户:

指标(头 3 天)7.3.27.4.0
无崩溃用户占比99.5%98.2%
冷启动中位数1.6 秒1.7 秒
结账转化31%32%

无崩溃用户占比掉了 1.3 个百分点;错误分组显示,改版后的地址选择器在 Android 11 上出现了新崩溃。发布停在 10%,两天后 7.4.1 修复了崩溃,再继续发布。因为只有 10% 的用户拿到了 7.4.0,约 90% 可能发生的崩溃被避免了。

app.tapcub.com

无崩溃用户

98.2%

▼ −1.3 个百分点

发布暂停在

10%

修复版本

7.4.1

▲ 2 天后

7.3.2 对比 7.4.0 · 头 3 天

示例数据
指标7.3.27.4.0
无崩溃用户占比99.5%98.2%
冷启动中位数1.6 秒1.7 秒
结账转化31%32%

Android 11 上地址选择器的新崩溃。

示例数据

常见错误

  • 重复使用构建号。 商店会拒绝,崩溃报告也会混淆。
  • 同一次发布在 iOS 和 Android 上版本号不同。 客服和统计都会乱。
  • 统计事件不带版本号。 分不清变化是不是来自某次发布。
  • 首日就全量发布。 一次退步会影响所有人。
  • 从不淘汰旧版本。 安全和接口的改动迟早会要求这样做。

在 TapCub 里跟踪 App 版本

  • 版本报表: 应用统计 › 用户分析 › 版本分布 列出每个版本的平台、占活跃用户的比例、崩溃数和首次出现日期,并用堆叠图显示主要版本。点击某一行,当前报表就会按这个版本筛选。见跟踪 App 版本。
  • 稳定性: 无崩溃用户、崩溃、ANR、界面卡顿和冷启动;错误分组可以标为已解决。
  • 漏斗和留存: 按 App 版本筛选,逐个版本对比转化和留存。

相关阅读:无崩溃率、提升 App 性能、App 改版。

常见问题

版本号和构建号有什么区别? 版本号(比如 4.3.1)是用户看到的;构建号是内部计数,每次上传到商店都必须递增。

iOS 和 Android 要用同一个版本号吗? 功能集相同的话,要。构建号可以不同。

什么时候升主版本? 发布是一次大改版,或者带来不兼容的改动时。对 App 来说,这常常是产品或市场的决定。

旧版本要支持多久? 直到使用旧版本的人很少、并且它们不再妨碍服务端或安全改动为止;规定最低支持版本,并提示用户更新。

参考资料

这篇文章对你有帮助吗?

我们会根据反馈修改和补充这篇内容。

陈屿

技术工程师

专注统计代码、SDK 与接口集成文档,从接入验证到问题排查,帮助开发者更顺畅地完成实施。

每次发布都能对比

版本报表、无崩溃用户、ANR、冷启动,以及按版本筛选的漏斗和留存。

看清数据,找到增长。

每一次点击,都有数据依据。装好一行代码,1 分钟看到第一批数据。

无需信用卡 · 统计与客服都有免费版 · 统计无 Cookie