Google Play のデベロッパーアカウント作成からアプリのテスト配布(内部テスト)まで - Flutter / Android

Google Play のデベロッパーアカウント作成からアプリのテスト配布(内部テスト)まで - Flutter / Android

March 30, 2022

自分用メモ。始めて作成した Flutter アプリを Google Play 経由で内部テスト配布したときの手順。

事前注意事項 #

組織名がデフォルトの com.example であるか、またはこれからはじまっているもの(例:com.example.my.app)は、Google Play Console にアップロードするときにエラーとなってしまう。

お試しでハローワールドアプリを作成・デプロイする場合であっても、com.example 以外の組織名を付与すること。

flutter create my_flutter_app -i swift -a kotlin --org com.my.app

0. 参考資料 #

Flutter のアプリを Android 用にビルドする #

以下の Flutter ドキュメントを参考に進める。(本記事もこれをなぞっているに過ぎない。本記事内に登場する引用文はこの記事のもの。)

日本語の記事で言えばこちらも参考になる。

Google Play Console で内部テスト用にアプリを公開する #

以下のヘルプページが参考になる。

1. アプリに署名する #

Play Store に ビルド資産をアップロードするためにキーを作成して署名する必要がある。

To publish on the Play Store, you need to give your app a digital signature.

On Android, there are two signing keys: deployment and upload. The end-users download the .apk signed with the ‘deployment key’. An ‘upload key’ is used to authenticate the .aab / .apk uploaded by developers onto the Play Store and is re-signed with the deployment key once in the Play Store.

1-1. Java の keytool のインストール場所を確認する #

flutter doctor -v する。

[] Android toolchain - develop for Android devices (Android SDK version 32.0.0)
    • Android SDK at /Users/********/Library/Android/sdk
    • Platform android-32, build-tools 32.0.0
    • Java binary at: /Applications/Android
      Studio.app/Contents/jre/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 11.0.10+0-b96-7281165)
    • All Android licenses accepted.

Java binary at: /Applications/AndroidStudio.app/Contents/jre/Contents/Home/bin/java と出力される。java と同じ階層に keytool もインストールされているため keytool は以下にある。

/Applications/Android\ Studio.app/Contents/jre/Contents/Home/bin/keytool

1-2. Java キーストア(jks)を作成する #

keytool が先の場所にある場合、以下を実行すればホームディレクトリにキーストアが生成される。

/Applications/Android\ Studio.app/Contents/jre/Contents/Home/bin/keytool -genkey -v -keystore ~/app-upload-keystore.jks -keyalg RSA -keysize 2048 -validity 10000 -alias app-upload

キーはどこに置いても良いが決して公開しないこと。

keep the keystore file private; don’t check it into public source control!

1-3. アプリからキーストアを参照させる #

[project]/android/ ディレクトリ直下に key.properties ファイルを作成し以下を記載する。

key.properties

storePassword=[キーストアに設定したパスワード]
keyPassword=[キーストアに設定したパスワード]
keyAlias=app-upload(キーストアに設定したエイリアス)
storeFile=/Users/[ユーザ名]/app-upload-keystore.jks(キーストアのパス)

こちらも決して公開しないこと。

Keep the key.properties file private; don’t check it into public source control.

2. ビルドの設定をする #

2-1. Gradle の設定を編集する #

Gradle(ビルドツール)の設定をリリース用に編集する。[project]/android/app/build.gradle ファイルを以下の通り編集する。

android ブロックの前にキーストアの情報を追加。

def keystoreProperties = new Properties()
def keystorePropertiesFile = rootProject.file('key.properties')
if (keystorePropertiesFile.exists()) {
    keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
}

android {
      ...
}

そして buildTypes ブロックを見つけて次のように変更。

// 変更前
buildTypes {
    release {
        // TODO: Add your own signing config for the release build.
        // Signing with the debug keys for now, so `flutter run --release` works.
        signingConfig signingConfigs.debug
    }
}

// 変更後
signingConfigs {
    release {
        keyAlias keystoreProperties['keyAlias']
        keyPassword keystoreProperties['keyPassword']
        storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
        storePassword keystoreProperties['storePassword']
    }
}
buildTypes {
    release {
        signingConfig signingConfigs.release
    }
}

2-2. flutter clean する #

Gradle のファイルを編集したら flutter clean する。

Note: You may need to run flutter clean after changing the gradle file. This prevents cached builds from affecting the signing process.

2-3. 設定内容を最終確認する #

Review the default App Manifest file, AndroidManifest.xml, located in [project]/android/app/src/main and verify that the values are correct

Review the default Gradle build file, build.gradle, located in [project]/android/app and verify the values are correct

確認だけなので詳細は省略。主にどこを確認すべきなのか、Flutter のウェブサイトを見れば解説してくれている。

3. ビルドする #

Flutter プロジェクトのディレクトリで以下を実行するだけ。

flutter build appbundle

これで AAB(Android App Bundle)形式にビルドされ [project]/build/app/outputs/bundle/release/.aab ファイルが作成されている。

4. Google Play Console のデベロッパーアカウントを作成する #

以下から Google Play のデベロッパーアカウントを作成する。アカウント作成には 25USD が必要となる。

5. Google Play Console からアプリを配布する #

Google Play Console にログインする。

5-1. Play Console でアプリを作成する #

「アプリを作成」からアプリを作成する。

5-2. 内部テストのテスターを選択する #

Play Console の「テスト > 内部テスト」から「テスター数」タブに移動する。

「メーリングリストの作成」にてテスターのメールアドレスを入力する。ここにリストされた人だけがアプリにアクセスできる。

5-3. リリースを作成する #

Play Console の「テスト > 内部テスト」の「新しいリリースを作成」を選択する。

先ほど作成した AAB をアップロードする。

5-4. 内部テスト状態として公開する #

そして「保存」、「リリースのレビュー」と遷移し、最後は「内部テストとしての公開を開始」を選択すると内部テスト状態になる。

5-5. アプリのリンクを取得する #

Play Console の「テスト > 内部テスト」から「テスター数」タブに移動する。

「テストへの参加方法」のところからリンクの URL がコピーできる。

5-6. スマートフォンからリンクにアクセスする #

スマートフォンのブラウザから URL にアクセスすると「内部テストに招待されました。」というページが表示される。

「招待に応じる」を選択した後は Google Play のダウンロードページへのリンクがあるのでそこからダウンロードする。

以上 #

おわり