20
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Firebase App Distribution を使ってみた

Last updated at Posted at 2019-12-05

Firebase App Distributionとは

Firebase App Distributionは開発途中のアプリケーションをテスターに配布するプラットフォームで、AndroidとiOSに対応しています。

今回はFirebaseコンソールとGradleを使用したapkファイルの配信方法を紹介します。

特徴

  • クロスプラットフォーム
    • AndroidとiOSに対応しています
  • テスターの管理
    • テストチームをグループにまとめて管理できます
    • 招待メールを作成したり招待リンクを作成できます
    • 招待した人数、招待を承認した人数、インストール数など把握できます
  • テストアプリの配信方法が豊富なのでお使いのCI環境に合わせてすぐ導入できます
    • Firebaseコンソールから配布
    • firebaseコマンドから配布
    • gradleから配布(Android)
    • fastlaneから配布
  • Crashlyticsを組み合わせるとビルドで安定性の指標を自動的に取得できます
  • 新しいアプリを配信すると準備ができたことがテスターに通知されます

Firebase コンソールを使用して配信

Firebaseコンソールを使用すると気軽にアプリを配信できます。

下準備

配信

App Distributionのページを開き利用契約を確認&チェックし開始を押します

Screen Shot 0031-12-03 at 20.45.48.png

予め用意したapkファイルをアップロードします

Screen Shot 0031-12-03 at 21.02.09.png

アップロード完了後、リリースノートを書きテスターを追加します

Screen Shot 0031-12-03 at 21.02.56.png

テスターに追加すると、招待メールがテスターに届きメールにあるリンクにアクセスするとアプリをダウンロードできます。なおFirebase App Distributionコンソール上では、招待済、承認済、ダウンロード済の数字が状況に合わせて変化するのでテスターの動向を確認できます。

Screen Shot 0031-12-03 at 21.03.52.png

以上でアプリを配信できました。しかしこれだと毎回手動でアップロードすることになるので、CI等に組み込み自動化したいところです。次にGradleを使用した配信方法を紹介します。今回はGradleを使用しましたが、Firebase CLIやfastlaneにも対応しており、使い方も大きく変わらないので、ご自身の環境に合わせ使い分けていただければと思います。

Gradle を使用して Android アプリをテスターに配布する

app/build.gradleを編集

app/build.gradleにFirebase App Distributionのスクリプトを追加します。

apply plugin: 'com.android.application'

apply plugin: 'com.google.firebase.appdistribution'

buildscript {
    repositories {
        google()
    }
    dependencies {
        classpath 'com.google.firebase:firebase-appdistribution-gradle:1.2.0'
    }
}

認証

appDistributionLoginコマンドまたはサービスアカウントを使用し認証します。

appDistributionLoginでOAuth認証

$ ./gradlew appDistributionLogin

実行すると認証用ページのURLが表示されるのでアクセスし認証します。

Please open the following address in your browser:
  https://accounts.google.com/o/oauth2/......

下記のメッセージがでれば認証完了です。

BUILD SUCCESSFUL in 49s
1 actionable task: 1 executed

Refresh tokenがでるので FIREBASE_TOKEN 環境変数にtokenをセットします。

Refresh token: hogehogehoge

export FIREBASE_TOKEN=hogehogehoge

サービスアカウントで認証したいひとへ

サービスアカウントで認証する場合はこちらをご参考ください。

配布プロパティを構成する

次にリリースノートとテスターを指定します。今回はシンプルに下記のような構成にしました。

 buildTypes {
        release {
            firebaseAppDistribution {
                releaseNotes="テスト配信" // リリースノート
                testers="ali@example.com, bri@example.com, cal@example.com" //テスター
            }
        }
        debug {
            firebaseAppDistribution {
                ...
            }
            testCoverageEnabled true
        }
    }

プロパティのパラメータは releaseNotesやtesters以外にも下記のようなパラメータや「デモ版」と「完全版」のプロダクトフレーバーを設定できます。詳しくは公式ドキュメントをご参考ください。

  • appId
    • FirebaseのアプリID
  • serviceCredentialsFile
    • サービスアカウントのパス
  • releaseNotes
    • リリースノートを文字で指定できます
  • releaseNotesFile
    • リリースノートが書かれたテキストファイルをパスで指定できます
  • testers
    • テスターのメールアドレスを文字で指定できます
  • testersFile
    • テスター情報が書かれたテキストファイルを指定できます

アプリを配信

app/build.gradleに追加したので app/ 配下でコマンドを実行します。
アップロードコマンドは名はパラメータやプロダクトフレーバーの設定で名称が変わるので下記で名前を確認します。

コマンドを確認
./gradlew tasks --all

Other tasks
-----------
appDistributionLogin
appDistributionUploadDebug
appDistributionUploadRelease

下記コマンドでapp-debug.apk を作成しFirebaseコンソールにアップロードします

$ ./gradlew assembleDebug appDistributionUploadDemoDebug

アップロードが成功するとテスターにアプリが配信されます

Screen Shot 0031-12-04 at 8.34.28.png

招待リンクの作成

招待リンクを作成するとテストアプリを広く通知できます

新しい招待リンクをクリック(グループやドメイン制限は特にかけることもできる)

Screen Shot 0031-12-04 at 8.35.10.png

copy linkからURLを取得し招待リンクにアクセスします

Screen Shot 0031-12-04 at 8.36.42.png

メールアドレスを入力しサインアップするとテスターに招待されます

GitHub Actionsと連携

こちらを使用すればGitHub ActionsにFirebase App Distributionを組み込みできます。

20
11
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
20
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?