はじめに
Flutterでのアプリ開発が一区切りしたので、GooglePlayストアとAppleStoreの両方にリリースしたのだが、その際にいつもの様に色々と手こずったので、誰かの参考になればと思い(自分のためにも)メモを残す。
環境
【PC】
MacBook Air (M1, 2020)
【各SWバージョン】
・macOS Big Sur 11.6.1
・Flutter 2.5.3 (dart 2.14.4)
・Xcode 13.1
・Cocoapods 1.11.2
・VScode(AplleSilicon) 1.62.2
メモ内容
① GooglePlayストアへのリリースまでの準備
② GooglePlayストアへのリリースおよびテスト
① GooglePlayストアへのリリースまでの準備
以下の手順でリリースします!
※前提としてGoogle Playへのアカウント登録が完了していること。
・アップロード用の署名鍵の生成
・アプリ名の変更
・ビルド前の設定追記
・Flutterアプリのビルド
・Google Playにアプリ登録
アップロード用の署名鍵の生成
以下のコマンドより署名鍵を生成する必要がある。
keytool -genkey -v -keystore key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key
早速以下の様なエラーが出た。
The operation couldn’t be completed. Unable to locate a Java Runtime.
Please visit http://www.java.com for information on installing Java.
Javaが入っていなかったので、こちらのサイトよりOpenJDKをインストール。
% java -version
openjdk version "17.0.2" 2022-01-18 LTS
OpenJDK Runtime Environment Zulu17.32+13-CA (build 17.0.2+8-LTS)
OpenJDK 64-Bit Server VM Zulu17.32+13-CA (build 17.0.2+8-LTS, mixed mode, sharing)
再度、以下のコマンドより署名鍵を生成する。
keytool -genkey -v -keystore key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key
都道府県や国コードなど聞かれるため、それらを入力して鍵の生成ができれば完了!
(terminalでコマンド実行した際のカレントディレクトリにkey.jks
ファイルができる)
アプリ名の変更
android/app/src/main/AndroidManifest.xml
を以下の部分を書き換える。
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="******************************************:">
<application
android:label="[ここに表示したいアプリ名を入れる]"
ビルド前の設定追記
先程作成した鍵を使ってアプリをビルドするために、key.jks
ファイルをFlutterプロジェクト内のandroid/app/
に配置。
※本番環境のビルド前の状態をgitなどにアップロードしている場合、この鍵ファイルまでアップロードしてしまわない様に気を付ける。
以下のファイルkey.properties
を作成して、Flutterプロジェクトのandroid
フォルダ直下に設置する。
storePassword=[署名鍵の生成に設定したパスワード]
keyPassword=[署名鍵の生成に設定したパスワード]
keyAlisas=key
storeFile=key.jks
android/app/build.gradle
の設定追記(1箇所目) ※30行目あたり
android {
// 〜〜省略〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
signingConfigs {
release {
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
storePassword keystoreProperties['storePassword']
}
}
buildTypes {
release {
signingConfig signingConfigs.release
}
}
}
android/app/build.gradle
の設定追記(2箇所目) ※任意の箇所でOK
def keystoreProperties = new Properties()
def keystorePropertiesFile = rootProject.file('key.properties')
if (keystorePropertiesFile.exists()) {
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
}
Flutterアプリのビルド
以下のコマンドよりAndroidアプリをビルド。
flutter build appbundle --release
💪 Building with sound null safety 💪
Removed unused resources: Binary resource data reduced from 165KB to 165KB: Removed 0%
Running Gradle task 'bundleRelease'... 48.2s
✓ Built build/app/outputs/bundle/release/app-release.aab (21.0MB).
一応ビルドは上手くいった!
※ 2021年8月からは、Google Play上の新規アプリを公開するにはAPKでなく「Android App Bundle」を使う必要があるとのこと。
Google Play Consoleにアプリを登録
以下の内容は日々アップデートされる可能性があるため参考程度に!
まずは、全てのアプリより『アプリ作成』をする。
アプリ名、デフォルトの言語、アプリ/ゲーム、無料/有料 など必要な入力・選択をする。
※無料/有料の設定について、アプリそのもののダウンロードが有料化無料かの指定。ダウンロード自体は無料で、アプリ内での追加コンテンツなどの購入が有料の場合でも、「無料」を選択する。
■アプリのアクセス権
自分のアプリにログイン機能があったため、アプリ機能を使うためのログイン認証の手順を作成。
■広告
広告の有無を選択するだけ。
■コンテンツのレーティング
コンテンツの評価をしてもらうため、色々な質問に回答する。
■ターゲットユーザー
13未満をターゲットにする場合は、プライバシーポリシーへの追加が必要らしい。
また、子供向けアプリの場合ファミリー向けプログラムに参加する。
■ニュースアプリ
ニュースアプリかどうかの回答をするだけ。
■データセーフティ
ここが結構時間のかかるところ。
自分はFirebaseを利用していたので、以下のサイトを確認しながら色々と回答した。
アプリ内でAdmobを使っていたりすると、少し入力項目が増える。
設定の最後にプライバシポリシーへのURLを登録する必要があるので、無料のブログサイトなどで作っておく。
■アプリカテゴリの選択・連絡先情報の登録
アプリカテゴリーやタグは少し悩むかもしれないが、基本的には必須項目を埋めるだけでよい。
■ストアの掲載情報を設定する
アプリ名、アプリの簡易な説明、アプリの詳細説明、アイコンやその他画像アップロードが必要。
※アイコン画像について、Google Playの方では 512×512 の解像度だが、Appleストアの方は確か 1024×1024 なのでこちらに合わせて画像ファイルは作っておいた方が良いかも。
ここまで終われば後はリリースするだけ!
② GooglePlayストアへのリリースおよびテスト
審査さえ通れば、もちろんいきなりリリースすることも可能だが、リリースしたアプリを一般公開する前にテストすることも可能。
クローズドテストをするため、以下に提示される項目を入れていき、テスターを登録すればOK!
※リリース時にアップロードするファイルは、flutter build appbundle --release
の実行結果にも出力される様に/build/app/outputs/bundle/release/app-release.aab
となる。
審査が通ると、テストアプリをダウンロードするためのリンクをコピーできる様になり、テスターユーザーからそのリンクにアクセスするとアプリがダウンロードできる。