SW Terminal APKs Version Control

文档解决的问题

为瞭解决SW APKs(AgentApp + ClientSDK) 在不同客户、不同branch 情况下,如何确保正确的 APK 正确的 Release.


文档的主要内容

  • 版本定义

    SWAPKs 的命名规则定义

  • 流程管控

    SW APKs 的release 流程定义


版本定义

在 Android APK 内部, 主要有两个栏位进行版本管理。

  • VersionCode:一个正整数,用作内部版本号。此数字仅用于确定一个版本是否比另一个版本更新,数字越大表示版本越新。Android 系统使用 versionCode 值来防止降级,方法是阻止用户安装 versionCode 低于设备上当前所安装版本的 APK。说的通俗点:这是给 OS 看的。
  • VersionName:一个字元串,用作向用户显示的版本号,在 APK 详情页面可以进行查看。说的通俗点:这是给 看的。

上面的两个栏位都定义在 Android 工程的 AndroidManifest.xml 文件中。

经过相关 research, 我们将採用下麵的方式对这两个字串进行赋值。

VersionCode

为了保证每次 release 的唯一性,同时保证每次 release 的 VersionCode 都在增加,我们採用下面的方式:

  • 使用 git 命令获取整个 git repo 裡面所有的 commit 次数,然后将这个次数赋值给 VersionCode.

为什麽这样是可行的:

  • 新的 release 必定和上次的 release 间有code commit, 这样确保了唯一性和自增性

目前SW APKs 已经导入了上面的修改。

VersionName

为了保证每次 release 的唯一性,同时保证每次 release 的 可追溯性,我们採用下面的方式:

  • 使用 V10.MMDDYYYY.LastGitCommitHASH 格式.

其中

  • V10, 目前是固定字串
  • MMDDYYYY, build APK 的时间。例如:11272019,表示 APK 在 2019 年 11 月 27 日 build 产生
  • LastGitCommitHASH, 通过命令获取到的当前分支最后一次 git commit 的 hash 值的前 7 位.

为什麽这样是可行的:

  • 新的 release 必定和上次的 release 间有code commit, 这样确保了唯一性,通过查看 git commit 的 hash 值可以快速定位到 code 属于的分支及 code 位置。

目前SW APKs 已经导入了上面的修改。


流程管控

上面是在 APKs 层面的版本管理手段,接下来我们将讨论 APK build 后 release 的流程。

这里将分下面的步骤,

  • SW APKs builder 完成后将 APKs release 给 SQA SW team 进行相关测试
  • SQA 测试完成后,把对应的 APKs commit 到 XAC Git server
  • 待有 OS BuildIn SW 需求时, SW PM 通知 SW APKs builder 和 OS builder
  • SW APKs builder 确认使用的 APKs 版本信息
  • OS builder 到对应的 git link 中抓取对应的 APKs buildin OS
  • OS builder release OS 给 SQA OS team
  • SQA OS team 再次检查 SW APKs VersionName 是否正确

你可能感兴趣的:(SW Terminal APKs Version Control)