← 工房に戻る
舞台裏の道具

Android Store Screenshot Kit

実際の Android アプリの本物のスクリーンショットを、毎回同じ方法で撮影し、そのまま Google Play に使えます。

3 台のスマートフォン画面。中央の 1 台が枠で囲まれ、チェックが付いている

プロジェクトについて

ストア用スクリーンショットはアプリを変更するたびに古くなり、スマートフォンで手作業で撮ると時間がかかるうえ、毎回まったく同じにはなりません。このキットはそれを繰り返せる手順に変えます。各アプリは自分のデータを準備して画面をたどる小さなテストだけを持ち、残りはキットが引き受けます。

アプリとテストをビルドし、選んだ Firebase Test Lab のデバイスで実行して最後まで追跡し、スクリーンショットをダウンロードして Google Play の要件に照らして確認してから、アプリのストア用フォルダーにコピーします。

仕組み

  1. 実行内容を書く。 短い TOML ファイルに、アプリ、テスト、使うデバイス、想定するスクリーンショットの枚数とサイズを記述します。
  2. アプリ側の部分を書く。 テンプレートのテストから始め、固定のサンプルデータを読み込み、撮影する画面を並べます。共通のヘルパーが画面の待機、タップ、システムダイアログの閉じ操作、画面の向きの固定を行います。
  3. 1 台のデバイスで実行する。 1 つのコマンドで両方の APK をビルドし、Firebase Test Lab に送信して、テストが終わるまで追跡します。
  4. 回収して確認する。 スクリーンショットをダウンロードし、枚数、サイズ、カラー形式を確認したうえで、実行の記録と一緒に保存します。

このキットで作成

これは Pocket Omaha の Google Play 用タブレットスクリーンショットで、Firebase Test Lab の実機 Pixel Tablet 上でこのキットが撮影しました。テストは Apple、JPMorgan、Nokia の記録済みデータを読み込むため、市場データは取得しておらず、どの実行でも同じ数値になります。

最初の実行では、アプリのネイティブライブラリの 1 つのアラインメントに関する Android の互換性警告も見つかりました。ライブラリを更新した後の 2 回目の実行では、警告は出ませんでした。

機能

  • 毎回同じ結果: 各アプリはライブのサービスを呼ばず、記録済みのサンプルデータを自分で読み込むため、実行ごとにスクリーンショットが変わりません。
  • 使う前に確認: すべての PNG について、想定した枚数、サイズ、そして Google Play が求める透過なしの RGB 形式を確認します。
  • 実行ごとの記録: 実行ごとに専用のフォルダーを作り、未加工の PNG と、ファイルのハッシュ、デバイス、Firebase Console へのリンク、正確な設定を記録した run.json を保存します。
  • 16 KB デバイスに対応: 別のチェックで、APK とその中のすべてのネイティブライブラリのアラインメントを確認し、メモリページが 16 KB の Android デバイスに備えます。
  • 思わぬ請求なし: デバイスは必ず明示的に指定するため、設定済みで有料の可能性がある実機すべてに実行が広がることはありません。
  • 秘密情報は入れない: プロジェクト ID は環境変数から、ログインは Google Cloud CLI から取得し、設定ファイルには認証情報を一切含めません。
  • 導入しやすい: ヘルパーが依存するのは AndroidX Test と UI Automator だけなので、Jetpack Compose を使うアプリにも使わないアプリにも合います。

ボンネットの下で

コマンドラインツールは Python 3.11 さえあれば動く単一の Python スクリプトです。共通ヘルパーは Java で書かれた小さな Android ライブラリなので、利用するアプリに Kotlin のバージョンを押し付けず、AGP 8 と AGP 9 の両方で動作します。CI では仮想デバイスをプルリクエストごとに実行し、実機はリリース候補に取っておけます。このキットは GPL-3.0 ライセンスのオープンソースです。