🔰基礎技術

【Flutter実践】アプリを「商品」にする|アイコン設定・本番環境・署名・リリースビルドの手順総まとめ

認証もDBも実装し、ついにアプリが動くようになりました。
しかし、今のスマホの画面を見てみてください。アイコンが「Flutterのロゴ」のままではありませんか?

今回は、アプリを「開発中のコード」から「ストアに並ぶ商品」へと進化させるための「リリース準備」を行います。

やることが少し多いですが、これを乗り越えればあなたのアプリが世界中に公開されます。一つずつ片付けていきましょう!

0. Google Play Consoleへの登録(お金の話)

技術的な作業の前に、現実的な準備です。
Androidアプリをリリースするには、Googleに「デベロッパー登録」をする必要があります。

  • 費用: 25ドル(約4,000円前後)※一度払えば一生有効
  • 必要なもの: Googleアカウント、クレジットカード

登録には本人確認などで数日かかることがあるので、Google Play Consoleから早めに手続きを済ませておきましょう。

1. アプリの顔「アイコン」を作る

デフォルトのFlutterアイコンのままだと、誰もダウンロードしてくれません。
オリジナルのアイコンを設定しましょう。

最強ツール「flutter_launcher_icons」

AndroidとiOSでは必要なアイコンのサイズがバラバラで、手動で作るのは地獄です。
そこで、1枚の画像から全サイズを自動生成してくれる神パッケージを使います。

  1. 画像を用意する:
    1024x1024ピクセルの正方形のアイコン画像(icon.png)を作り、プロジェクトの assets/icon.png に置きます(フォルダがなければ作ってください)。
  2. pubspec.yaml に追記する:
    dev_dependencies(開発用依存関係)の部分に以下を追加します。
dev_dependencies:
  flutter_test:
    sdk: flutter
  # ▼ ここに追加
  flutter_launcher_icons: ^0.13.1

# ▼ ファイルの一番下に追加
flutter_launcher_icons:
  android: "launcher_icon"
  ios: true
  image_path: "assets/icon.png"
  min_sdk_android: 21 # min_sdk_android は「Androidアイコン生成時のminSdk」を指定します(最小16、既定21)。アプリ本体のminSdkはGradle側(minSdkVersion)で管理します。

3. 生成コマンドを実行する:
ターミナルで以下のコマンドを叩けば、一瞬で全サイズのアイコンが生成・配置されます。

flutter pub get
dart run flutter_launcher_icons

2. アプリ名の最終確認

スマホのホーム画面の下に表示される名前です。
前回の記事でも触れましたが、リリース前にもう一度確認しておきましょう。

ファイル: android/app/src/main/AndroidManifest.xml

<application
    android:label="習慣トラッカー"  <!-- ←ここがアプリ名 -->
    ...>

💡 Tips:テスト環境と本番環境を分ける

開発中に適当に入力したデータが、本番ユーザーに見えてしまったら大変です。
実際の開発では「開発用(Dev)」「本番用(Prod)」でFirebaseプロジェクト自体を分けることも多いです。

【初心者に一番簡単な分け方】

  • 開発中: google-services.json は開発用のプロジェクトのものを使う。
  • リリース直前: 本番用のFirebaseプロジェクトを新規作成し、そこからDLした google-services.jsonファイルを差し替えてからビルドする。

※慣れてきたら「Flavor(フレーバー)」という機能を使って自動切り替えしますが、最初は「手動差し替え」でも十分です。事故を防ぐためにプロジェクトは分けましょう。

3. アプリに署名をする(Keystoreの作成)

ここが一番の難関です。
Androidアプリをストアに出すには、「このアプリは間違いなく私が作りました」という電子署名が必要です。

これまではPCが勝手に作った「デバッグ用の鍵」を使っていましたが、リリース用には「あなただけの本番の鍵(upload-keystore.jks)」を作る必要があります。

Step 1: 鍵を作るコマンド

ターミナル(Mac)またはPowerShell(Windows)で以下を実行します。
※パスワードを求められるので、忘れないようにメモしてください。

# Mac / Linux
keytool -genkey -v -keystore upload-keystore.jks -keyalg RSA -keysize 2048 -validity 10000 -alias upload

# Windows (PowerShell)
keytool -genkey -v -keystore upload-keystore.jks -storetype JKS -keyalg RSA -keysize 2048 -validity 10000 -alias upload

これでフォルダに upload-keystore.jks というファイルが生成されます。
これを android/app/ フォルダの中に移動させてください。

Step 2: 鍵情報を登録する

Android側に「この鍵を使ってね」と教える設定ファイル(key.properties)を作ります。
android/ フォルダ直下に新規ファイル作成し、以下を記述します。

storePassword=さっき決めたパスワード
keyPassword=さっき決めたパスワード
keyAlias=upload
storeFile=upload-keystore.jks

最後に、android/app/build.gradle を編集して、このファイルを読み込む設定を追加します。
(記述場所は少し複雑なので、公式ドキュメントのコピペ推奨です)

⚠️ 絶対に無くさないで!

この upload-keystore.jks を紛失すると、二度とそのアプリをアップデートできなくなります。
また、セキュリティ上、このファイルと key.properties はGitにコミットしないように .gitignore に追加しておきましょう。

4. リリース用ファイル(AAB)のビルド

準備は整いました。いよいよ「提出用ファイル」を作ります。

昔は APK という形式でしたが、現在は AAB (Android App Bundle) という形式が推奨されています。これを使うと、Google Playがユーザーの端末に合わせてサイズを最適化してくれます。

flutter build appbundle

ビルドが成功すると、以下の場所にファイルが完成します。
build/app/outputs/bundle/release/app.aab

この .aab ファイルが、Google Play Consoleにアップロードする「商品そのもの」です。

5. 最終確認:実機で「リリース版」を動かす

ストアにアップロードする前に、自分のスマホで「リリース版」の挙動を確認しましょう。
デバッグ版(普段F5で動かしているもの)とは動きが違うことがあります。

Android端末をPCに繋ぎ、以下のコマンドを実行します。

flutter run --release
  • チェックポイント:
  • アイコンは変わっているか?
  • アプリ名は正しいか?
  • Googleログインはできるか?
    ※重要:リリース用のSHA-1(新しい鍵のフィンガープリント)をFirebaseとGoogle Cloud Consoleに追加していないと、ここでログインに失敗します!

まとめ:あとは審査を待つだけ!

お疲れ様でした!
これで手元に「ストアに提出できるファイル(AAB)」が完成しました。

あとは Google Play Console にログインし、「新しいアプリの作成」から必要事項(説明文やスクリーンショット)を入力して、AABファイルをアップロードするだけです。

最初は審査にドキドキしますが、通った瞬間の喜びはひとしおです。

-🔰基礎技術