0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AppCenter 終了に伴い Firebase App Distribution に移行した対応内容

Posted at

経緯

Android のバイナリのテスターへの配布を AppCenter を利用して行なっていましたが、2025年3月31日を以ってサービス終了との知らせが。(かなり前から告知されていた。)

公式では Google Play Console の内部テストに配布を勧めていたが、QA サイドから「使いにくそう」との意見が出たので他サービスを利用する検討を行った結果…
既に Messaging などを利用していた Firebase に白羽の矢が立ちました。

現状、ビルドは Unity Build Automation を利用してのクラウドビルド、使用 Unity バージョンは 2021.3.36f1 となっています。

備忘録や今後の参考程度に、対応内容を記します。
当方は Android のみの対応でしたが、iOS でもほぼ同じ様な形で対応できるかと思います。

Firebase コンソール側の設定

  • リリース機能を有効にする
    対象のプラットフォームを選択して、「開始」ボタンを押すだけ。

  • テスターやグループの追加
    「テスターとグループ」タブから「グループを追加」ボタンを押して、任意の名前を付けてグループを作成。
    その後、「招待リンク」タブから「招待リンクを作成」を押して、先ほど作成したグループを指定して「リンクを作成」する。
    「テスターとグループ」タブに戻って、テスターを追加したいグループを選択して有効にしてから、「テスターを追加」でメールアドレスを記載して「テスターを追加」する。

  • AAB ファイルのアップロードを有効にする
    そのままだと .apk ファイルのみしかアップロードできない。マニュアルによれば .aab をアップロードできる様にするには、Google Play Console との紐付けが必要。この対応は、プロジェクトのオーナークラスのロールの方でしかできない。
    当然、Google Play Console にもバイナリをアップロードしたことのあるタイトルでないとダメ。
    対応が完了すると表示部分が以下の様に変わります。

  • Firebase コンソールでの秘密鍵の作成方法
    下記ページの「新しい秘密鍵を生成」ボタンを押すだけ。.json ファイルがダウンロードされます。
    その後確認したところ GCP の方にもキーが追加されていました。

参考にした情報

  • アップロード用のシェルスクリプト
    Unity Discussions
    ほぼこの投稿内容の処理をそのまま流用しました。
    ローカルで挙動を試した際はこちらに記載のあるコードを実行することでアップロード成功。
    Firebase をオプションでグローバルにインストールするようにした場合は package.json を用意する必要なし。

  • Firebase の認証
    Firebase CLI と GOOGLE_APPLICATION_CREDENTIALS
    Firebase のコマンドラインツールをインストールしているパソコンで下記コマンドを叩くとトークンが取得できる。
    ただこのトークンシステムがいずれ非推奨になるとのことだったので、このトークンを使わずに下記記事を参考に認証を通すようにしました。
firebase login:ci

UBA 実行時に出たエラーたち

  • Node のバージョンが合わない。
    UBA 側の 2021.3.36f1 で使用している Node のバージョンが 16.20.2 と固定されていた。
    「npm install firebase-tools」でインストールした最新の Firebase コマンドラインツールのバージョンではこの Node のバージョンが古すぎるとしてエラーが発生しビルド失敗になっていた。
    (ログでは「最低でも 18.0.0 以上のバージョンでないとダメ」とのことだった。)

  • Firebase コマンドラインツールのバージョンが低いと AAB ファイルがアップロードできない。
    固定された Node のバージョンに合わせる形で Firebase コマンドラインツールのバージョンを低めに指定してインストール。
    この時、今度は Firebase コマンドラインツールのバージョンが低すぎて AAB ファイルが扱えないとエラーが出て失敗。
    (当然といえは当然でした…)

  • グローバルに新しくインストールした Node を指してくれない。
    それぞれインストール先が異なるため、そのままでは古いバージョンの方を指したまま。
    (これも当然といえば当然…)

エラー対策

  • Firebase と Node のそれぞれのバージョンを、ローカルで実行し成功した際のバージョンと同じに指定してインストールする様に設定しました。
    (.aab ファイルのアップロードができないと意味がないため、Firebase のバージョンを可能な限り最新のものへ。それに対応する Node のバージョンを選ぶ。)
  • Firebase と Node をそれぞれグローバルにインストールし、パスを通してグローバルにインストールした Node を使用する様に指定しました。
    (これによってデフォルトの古いバージョンの Node を指さないように、強引に変更。)

最終的に FIX したシェルスクリプトのコード

#!/bin/sh

set -x
set -e

# ディレクトリをこのファイルの場所に移動
dir=`dirname $0`
cd "${dir}"

# Firebase 用パラメータ
export FIREBASE_APPLICATION_ID='x:xxxxxxxxxxxx:android:xxxxxxxxxxxxxxxxxxxxxx'
export FIREBASE_UPLOAD_FILE="${UNITY_PLAYER_PATH}"
# Firebase コンソール側で設定したグループ名
export TESTER_GROUP_NAME='xxxxxxxxxxxx'
export FIREBASE_RELEASE_NOTES="【ターゲット】 **${BUILD_TARGET}**  
【ビルド番号】 **${UCB_BUILD_NUMBER}**  
【コミット】${BUILD_REVISION}"
# 秘密鍵の JSON ファイルまでのパス(当方はこのスクリプトファイルと同じ階層に保持)
export GOOGLE_APPLICATION_CREDENTIALS='./xxxxxxxx.json'

# Firebase と Node をバージョンを指定してグローバルにインストール
sudo mkdir -p /usr/local/n
sudo chown -R $(whoami) /usr/local/n
export PATH="/usr/local/bin:$PATH"
npm install -g n && n 22.12.0
npm install -g firebase-tools@13.29.1

# Firebase App Distributionを実行
firebase appdistribution:distribute "${FIREBASE_UPLOAD_FILE}" \
  --app "${FIREBASE_APPLICATION_ID}" \
  --groups "${TESTER_GROUP_NAME}" \
  --release-notes "${FIREBASE_RELEASE_NOTES}" \

exit 0
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?