SW Terminal APKs Version Control
2019-11-28 本文已影响0人
you的日常
文档解决的问题
为瞭解决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 是否正确