Bitrise 是一个移动应用程序开发平台,使数以万计的开发人员能够自动化集成、测试和部署。通过与开发人员熟悉和喜爱的服务的 200 多个集成,Bitrise 使开发人员可以自由地迭代并改进了他们的工作流程,以获得更快、更好的结果。它提供了 300 个多个步骤和集成,以便轻松连接您在移动开发工作流程中使用的流程和服务。
背景
这个项目是我司跟澳洲公司合作的一个足球体育类项目,他们为了解决每次发布应用时都要手动打包的痛点,决定引入 Bitrise 平台来自动化部署应用发布给 QA 或者生产环境。由于我之前有使用过 Bitrise 的经验,相关的一些任务也就交给我了,在完成一些配置正常使用过一段时间后,QA 提出了每次给到的 Apk 都是一样的 Name,在多个版本或平台的 apk 一起给到的情况下无法做区分,于是就有了这个任务给到我。
解决过程
在拿到任务的第一时间,我首先想到的是在build.gradle
中添加一个 rename 方法类似下面这种代码:
1 | def renameAPK(variant, defaultConfig, buildType) { |
但是这个方案被 Leader 否决了,他觉得用 Bitrise 实现更好些,于是这个方案就放弃了。
在经过 Google 的一系列搜索,虽然没有直接找到解决方案,但是相应的找到了 iOS 在 Bitrise 上的一个实现:
1 |
|
这是在 Bitrise 的 Workflow 中产生 ipa 文件的 Step 后面加的一个 rename 脚本。
但是在 Android 的 Deploy 的 Workflow 中 Generate Apk
的 step 并没有把 Apk 的 VersionName 和 VersionCode 保存到环境变量中,所以这里需要添加一个Apk Info
的 step 来把这两个信息保存到环境变量中。
最终方案
所以相应的 Android 端的解决方案就是:
1 |
|
至此,我便完成了这个任务。