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?

APKファイルの配布 - Firebase App Distribution

Last updated at Posted at 2025-08-09

はじめに

Firebase App Distributionを使って、テスター向けにAPKファイル(Androidアプリ)を配布してみます。

  • Android Studio
  • Firebase App Distribution

Androidアプリの配布

test-apk-helloアプリの作成

New Project > Basic Views Activity

パッケージ名: com.example.test_apk_hello

image.png

Firebase プロジェクトの追加

  1. Firebase のコンソールを開く
  2. プロジェクトを追加する
    プロジェクト名: test-apk-hello

アプリの追加と設定

image.png

Androidアイコンをクリックし、アプリにFirebase(SDK)を追加する

  1. アプリを登録する
    パッケージ名: com.example.test_apk_hello
  2. 構成ファイルをダウンロードして追加する
    ダウンロードファイル: google-services.json
    追加先: モジュール(アプリレベル)のルート ディレクトリ(app
  3. Firebase SDKを追加する
    ルートレベル(プロジェクト レベル)の Gradle ファイル
    [project]/build.gradle.kts
    モジュール(アプリレベル)の Gradle ファイル
    [project]/[app-module]/build.gradle.kts
  4. Android プロジェクトと Gradle ファイルを同期する
google-services.json (sample)
{
  "project_info": {
    "project_number": "123456789012",
    "project_id": "test-apk-hello",
    "storage_bucket": "test-apk-hello.firebasestorage.app"
  },
  "client": [
    {
      "client_info": {
        "mobilesdk_app_id": "1:123456789012:android:ffffffffffffffffffffff",
        "android_client_info": {
          "package_name": "com.example.test_apk_hello"
        }
      },
      "oauth_client": [],
      "api_key": [
        {
          "current_key": "CurRneTkey123currentKEY321CURrntKeY333"
        }
      ],
      "services": {
        "appinvite_service": {
          "other_platform_oauth_client": []
        }
      }
    }
  ],
  "configuration_version": "1"
}
[project]/build.gradle.kts

plugins {
  // ...

  // Add the dependency for the Google services Gradle plugin
  id("com.google.gms.google-services") version "4.4.3" apply false

}
[project]/[app-module]/build.gradle.kts
plugins {
  id("com.android.application")

  // Add the Google services Gradle plugin
  id("com.google.gms.google-services")

  ...
}

dependencies {
  // Import the Firebase BoM
  implementation(platform("com.google.firebase:firebase-bom:34.0.0"))


  // TODO: Add the dependencies for Firebase products you want to use
  // When using the BoM, don't specify versions in Firebase dependencies
  implementation("com.google.firebase:firebase-analytics")


  // Add the dependencies for any other desired Firebase products
  // https://firebase.google.com/docs/android/setup#available-libraries
}

アプリ名とバージョン名

アプリ名は、リソースのstrings.xmlファイルに記述されています。

[project]/app/src/main/res/values/strings.xml
<resources>
    <string name="app_name">TestAPK Hello</string>

バージョン名とバージョンコードは、ルートレベル(プロジェクト レベル)の Gradle ファイル ([project]/build.gradle.kts)に記述されています。

gradle:[project]/[app-module]/build.gradle.kts
        versionCode = 1
        versionName = "1.0"

配布する際は、その都度、バージョンコード(versionCode)を変更します。

ビルド - APKファイルの生成

Androidアプリをビルドし、APKファイル(app-debug.apk)を生成します。

  • メニュー > Build > Generate App Bundles or APKs > Generate APKs
生成されるAPKファイル
[project]/app/build/outputs/apk/debug/app-debug.apk

配布の開始

  1. 左のメニューから、実行 > App Distribution を選択する
  2. 開始をクリックする
  3. グループ追加: Join
  4. 招待リンクを作成: https://appdistribution.firebase.dev/i/3163df5d52d9ca08
  5. 招待リンクからユーザー登録する(電子メールアドレス)

配布 - ファイルのアップロード

  1. 左のメニューから、実行 > App Distribution を選択する
  2. リリースで、APKファイルをアップロードする
  3. グループを追加する: Join
  4. リリース内容を記入する
  5. n人のテスターに配布ボタンで配布する

アプリのインストール(テスター側)

  1. テスターが電子メールを受け取る
  2. 受け取ったメール本文のリンクを開く
  3. app-tester.apkをダウンロードし、インストールする(App Testerアプリ)
  4. TestAPK Helloをインストールし、開く

バージョンアップ - ファイルのアップロード

  1. 左のメニューから、実行 > App Distribution を選択する
  2. リリースで、APKファイルをアップロードする
  3. グループを追加する: Join
  4. リリース内容を記入する
  5. n人のテスターに配布ボタンで配布する

アプリのバージョンアップ(テスター側)

  1. テスターが電子メールを受け取る
  2. 受け取ったメール本文のリンクを開く
  3. App Testerアプリが開くので、アプリを更新する

まとめ

Firebase App Distributionを使って、テスター向けにAPKファイル(Androidアプリ)を配布しました。

おまけ

Github Actions で、ビルドから配布まで可能です。

実装例: android-release.yml
./.github/workflows/android-release.yml
name: Android Release

on:
  push:
    tags:
      - "*"

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout repository
        uses: actions/checkout@v4

      - name: Get repository name
        id: repository
        run: echo "name=${GITHUB_REPOSITORY#${GITHUB_REPOSITORY_OWNER}/}" >> $GITHUB_OUTPUT

      - name: Set up Java 17 (Temurin)
        uses: actions/setup-java@v4
        with:
          distribution: 'temurin'
          java-version: '17'

      - name: Decode keystore from secret
        run: |
          echo "${{ secrets.SIGNING_KEY }}" | base64 -d > release.jks

      - name: Decode Firebase credentials
        run: |
          echo "${{ secrets.FIREBASE_CREDENTIALS }}" | base64 -d > firebase.json

      - name: Make gradlew executable
        run: chmod +x ./gradlew

      - name: Build APK (Release)
        run: ./gradlew assembleRelease appDistributionUploadRelease --stacktrace
        env:
          KEY_ALIAS: ${{ secrets.KEY_ALIAS }}
          KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }}
          STORE_PASSWORD: ${{ secrets.STORE_PASSWORD }}
          STORE_FILE: ${{ github.workspace }}/release.jks
          GOOGLE_APPLICATION_CREDENTIALS: ${{ github.workspace }}/firebase.json
          FIREBASE_RELEASE_NOTES: これはリリースノートです。
          FIREBASE_GROUPS : Join

      - name: Locate and rename generated APK
        id: find_apk
        run: |
          APK_PATH=$(find ${{ github.workspace }}/app -name "*.apk" | head -n 1)
          NEW_APK_PATH=${{ github.workspace }}/${{ steps.repository.outputs.name }}.${{ github.ref_name }}.apk
          cp "$APK_PATH" "$NEW_APK_PATH"
          echo "APK found at: $APK_PATH"
          echo "New APK path: $NEW_APK_PATH"
          echo "release_apk_path=$NEW_APK_PATH" >> $GITHUB_OUTPUT

      # Ensure workflow permissions: Settings > Actions > General > Workflow permissions: Read and write
      - name: Upload APK to GitHub Release
        uses: softprops/action-gh-release@v2
        with:
          tag_name: ${{ github.ref }}
          name: APK ${{ github.ref_name }}
          files: ${{ steps.find_apk.outputs.release_apk_path }}
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

      - name: Set up GitHub CLI
        run: sudo apt-get install gh -y

      - name: Create tag and release on external repository
        env:
          GH_TOKEN: ${{ secrets.PAT_FOR_TEST_APK_HELLO_REL }}
          TAG_NAME: ${{ github.ref_name }}
          APK_PATH: ${{ steps.find_apk.outputs.release_apk_path }}
          GH_OWNER: <GitHubのオーナー名>
          GH_REPO: <GitHubのリポジトリ名>
        run: |
          gh api \
            -X POST \
            -H "Accept: application/vnd.github+json" \
            /repos/$GH_OWNER/$GH_REPO/git/refs \
            -f ref="refs/tags/$TAG_NAME" \
            -f sha="$(gh api /repos/$GH_OWNER/$GH_REPO/commits/main --jq .sha)"
          gh release create "$TAG_NAME" \
            --repo $GH_OWNER/$GH_REPO \
            --title "APK $TAG_NAME" \
            --notes "外部にリリースしました。" \
            "$APK_PATH"

GitHubのSecretsに保存するキー

キー 内容 備考
【アプリ署名】
SIGNING_KEY キーストア(.jks) base64化
STORE_PASSWORD キーストアのパスワード
KEY_ALIAS 鍵を識別する名前
KEY_PASSWORD 鍵のパスワード
【App Distribution】
FIREBASE_CREDENTIALS Google サービスアカウントの秘密鍵 base64化

Google サービスアカウントの秘密鍵 - FIREBASE_CREDENTIALS

  1. Firebase コンソール → 歯車 → プロジェクトの設定 → サービスアカウント
  2. 「新しい秘密鍵の生成」で JSON をダウンロード
    ファイル名: test-apk-hello-firebase-adminsdk-fbsvc-ee4fe2b8a1.json
  3. Base64 化して GitHub Secrets FIREBASE_CREDENTIALS に保存
bash
base64 -w 0 test-apk-hello-firebase-adminsdk-fbsvc-ee4fe2b8a1.json > test-apk-hello-firebase-adminsdk-fbsvc-ee4fe2b8a1.json.base64.txt
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?