← 返回工作坊
幕后工具

Android Store Screenshot Kit

真实 Android 应用的真实截图,每次都以相同方式生成,可直接用于 Google Play。

三块手机屏幕,中间一块被框出并打勾

关于项目

应用每次更新,商店截图就会过时;在手机上手动截图既慢,又很难两次完全一致。这个工具包把截图变成可重复的步骤:每个应用只保留一个小测试,用来准备自己的数据并逐个打开页面,其余工作都交给工具包。

它会构建应用及其测试,在选定的 Firebase Test Lab 设备上运行,全程跟踪运行过程,下载截图,并按照 Google Play 的要求检查,再复制到应用的商店素材文件夹。

它是如何运作的

  1. 描述运行。 一个简短的 TOML 文件写明应用、测试、要使用的设备,以及预期的截图数量和尺寸。
  2. 编写应用自己的部分。 从模板测试开始,载入固定的示例数据,并列出要截取的页面。共享的辅助函数负责等待页面、点按、关闭系统对话框以及锁定屏幕方向。
  3. 运行一台设备。 一条命令即可构建两个 APK,提交到 Firebase Test Lab,并跟踪测试直到结束。
  4. 收集并检查。 截图下载后会检查数量、尺寸和颜色格式,并与一份运行记录一起保存。

用本工具包制作

这些是 Pocket Omaha 在 Google Play 上的平板截图,由本工具包在 Firebase Test Lab 的实体 Pixel Tablet 上拍摄。测试载入了 Apple、JPMorgan 和 Nokia 的录制数据,因此没有获取任何市场数据,每次运行显示的数字都相同。

第一次运行还发现了一条 Android 兼容性警告,涉及应用中某个原生库的对齐方式。更新该库后,第二次运行顺利完成,不再出现该警告。

功能

  • 每次运行结果相同: 每个应用载入自己录制好的示例数据,而不是调用线上服务,因此截图不会在不同运行之间发生变化。
  • 使用前先检查: 每个 PNG 都会检查数量、尺寸,以及 Google Play 要求的不含透明通道的 RGB 格式。
  • 每次运行都有记录: 每次运行都有独立的文件夹,保存未经修改的 PNG,以及一个 run.json 文件,其中包含文件哈希、设备、Firebase Console 链接和完整配置。
  • 适配 16 KB 设备: 另有一项检查会核对 APK 及其中每个原生库的对齐方式,以适配内存页为 16 KB 的 Android 设备。
  • 不会有意外账单: 每次都必须明确指定设备,因此一次运行绝不会扩散到所有已配置、可能收费的实体设备上。
  • 密钥不入配置: 项目 ID 来自环境变量,登录则通过 Google Cloud CLI;配置文件中不包含任何凭据。
  • 易于接入: 辅助函数只依赖 AndroidX Test 和 UI Automator,因此无论应用是否使用 Jetpack Compose 都适用。

在引擎盖下

命令行工具是一个 Python 脚本,除了 Python 3.11 之外不需要任何东西。共享辅助函数是一个用 Java 编写的小型 Android 库,因此不会强制使用它的应用采用特定的 Kotlin 版本,并且同时支持 AGP 8 和 AGP 9。在 CI 中,可以在每个拉取请求上运行虚拟设备,把实体设备留给候选发布版本。该工具包以 GPL-3.0 许可证开源。