Firebase App Distribution API

Firebase App Distributionから最新バイナリをダウンロードするためにFirebase App Distribution API を利用する。

REST APIのprojects.apps.releases.list を利用すると、App DistributionにアップロードされたバイナリのダウンロードURLを取得できる。

事前準備

Firebase App Distribution APIにはOAuth2の認証によりアクセスが可能で、事前にアクセストークンを取得する必要がある。
Firebase App Distributionへのアップロードに使ったGCPのサービスアカウントのキー(JSON)を使ってアクセストークンを取得する。

gcouldコマンドは以下の手順でインストールしておく。

gcloud CLIをインストールする
curl -sSL https://sdk.cloud.google.com | bash

コマンド

アクセストークンの取得

まずREST APIを利用するためのアクセストークンを取得する。

gcloud auth activate-service-account --key-file=サービスアカウントの鍵のJSONファイルのパス
ACCESS_TOKEN=$(gcloud auth print-access-token)

サービスアカウントの鍵のJSONファイルはFirebaseのサービス画面の「サービスアカウント」からGoogle CloudのIAM画面へアクセスし、作成したものを使う。
参考: 【Android】Firebase App DistributionへGitHub Actionsでアップロードする

ダウンロードURLの取得

REST APIでダウンロードURLを取得する。
projects.apps.releases.list を利用する。

FIREBASE_PROJECT_NUMBER=Firebaseのプロジェクト番号
FIREBASE_APP_ID=FirebaseのアプリID
DOWNLOAD_URL=$(curl -s -H "Authorization: Bearer $ACCESS_TOKEN" \
"https://firebaseappdistribution.googleapis.com/v1/projects/${FIREBASE_PROJECT_NUMBER}/apps/${FIREBASE_APP_ID}/releases" | jq -r '.releases[0].binaryDownloadUri')

Firebaseのプロジェクト番号とアプリIDはFirebaseのプロジェクトの設定画面から取得する。

プロジェクト番号とアプリID

REST APIのレスポンスは以下のようになっている。

{
  "releases": [
    {
      "name": "..",
      "releaseNotes": {
        ...
      },
      "displayVersion": "...",
      "buildVersion": "...",
      "createTime": "...",
      "firebaseConsoleUri": "https://...",
      "testingUri": "https://...",
      "binaryDownloadUri": "https://..."
    },
    ...

上記コマンドでは上記JSONのうち、releasesの最初の要素のbinaryDownloadUriを取得している。

ダウンロード

curl -L -o app.apk "$DOWNLOAD_URL"