ponshu-room-lite/docs/DISTRIBUTION_API_KEY_SETUP.md

5.7 KiB
Raw Blame History

配布用 Gemini API キー設定ガイド

このガイドは、知人配布用 APK に埋め込む 専用 Gemini API キー を発行・設定する手順書です。

なぜ専用キーが必要か

開発用キー(lib/secrets.local.dart に設定済み)をそのまま配布 APK に使うと:

  • APK を逆コンパイルすれば誰でもキーを抽出できる
  • あなたのクォータ(無料枠)を知らない第三者に使い尽くされる可能性がある
  • キーを無効化すると開発環境も壊れる

解決策: 配布専用キーを発行し、Androidパッケージ名で制限する。


手順

1. Google Cloud Console で新しい API キーを発行

  1. Google AI Studio にアクセス
  2. 右上のメニューから「Get API key」→「Create API key in new project」
    • または既存プロジェクトに追加: 「Create API key」→ プロジェクト選択
  3. 発行されたキーをメモ(AIzaSy... 形式)

2. API キーに制限を設定

Google Cloud Console API 認証情報ページ にアクセス:

  1. 作成したキーをクリック → 「キーを編集」
  2. API の制限:
    • 「キーを制限する」を選択
    • 「Generative Language API」のみ選択
  3. アプリケーションの制限:
    • 「Android アプリ」を選択
    • 「アイテムを追加」をクリック
    • パッケージ名: com.posimai.ponshu_room_lite
    • SHA-1 証明書フィンガープリント: (後述)
  4. 保存

3. リリース署名の SHA-1 フィンガープリントを取得

配布 APK はリリースキーストアで署名する必要があります。

キーストアが未作成の場合Windowsコマンドプロンプト:

keytool -genkeypair -v -keystore android\app\ponshu_release.jks -keyalg RSA -keysize 2048 -validity 10000 -alias ponshu_key

パスワードを設定し、組織情報を入力。

⚠️ パスワードは安全な場所に記録してください。紛失するとアプリの更新ができなくなります。

SHA-1 の取得Windowsコマンドプロンプト:

keytool -list -v -keystore android\app\ponshu_release.jks -alias ponshu_key

出力の SHA1: 行をコピーして Google Cloud Console に貼り付ける。

4. key.properties にパスワードを設定

android/key.properties を新規作成(このファイルは .gitignore に含まれています):

storePassword=あなたが設定したパスワード
keyPassword=あなたが設定したパスワード
keyAlias=ponshu_key
storeFile=ponshu_release.jks

5. build.gradle.kts にリリース署名を設定

android/app/build.gradle.kts を以下のように変更:

import java.util.Properties

// key.properties からリリース署名情報を読み込み
val keyPropertiesFile = rootProject.file("key.properties")
val keyProperties = Properties()
if (keyPropertiesFile.exists()) {
    keyProperties.load(keyPropertiesFile.inputStream())
}

android {
    // ... 既存設定 ...

    signingConfigs {
        if (keyPropertiesFile.exists()) {
            create("release") {
                keyAlias = keyProperties["keyAlias"] as String
                keyPassword = keyProperties["keyPassword"] as String
                storeFile = file(keyProperties["storeFile"] as String)
                storePassword = keyProperties["storePassword"] as String
            }
        }
    }

    buildTypes {
        getByName("release") {
            signingConfig = if (keyPropertiesFile.exists()) {
                signingConfigs.getByName("release")
            } else {
                signingConfigs.getByName("debug")
            }
            isMinifyEnabled = false
            isShrinkResources = false
        }
    }
}

key.properties が存在しない場合は自動的に debug 署名にフォールバックします。

6. 配布 APK のビルド

flutter build apk --release --dart-define=GEMINI_API_KEY=AIzaSy...(配布用キー)

出力ファイル: build\app\outputs\flutter-apk\app-release.apk


配布方法

Google Drive 経由(推奨)

  1. app-release.apk を Google Drive にアップロード
  2. 共有リンクを知人に送付
  3. 受信者は Android の「設定 > セキュリティ > 提供元不明のアプリ」を有効化してインストール

LINE で直接送信

  1. APKファイルをLINEのトーク画面にドラッグドロップ
  2. 受信者がファイルをタップしてインストール

adb 直接転送(テスト時)

adb install build\app\outputs\flutter-apk\app-release.apk

API クォータ管理

設定 推奨値 説明
1日あたりのリクエスト上限 100〜200 Google Cloud Console → API → クォータで設定
無料枠 1,500回/日 Gemini 2.5 Flash 無料枠

Google Cloud Console で アラート を設定しておくことを推奨:

  • 「APIs & Services」→「Gemini API」→「クォータ」→「アラートの設定」

チェックリスト

  • 配布用 API キーを Google AI Studio で発行
  • API 制限: Generative Language API のみ
  • アプリ制限: com.posimai.ponshu_room_lite の SHA-1
  • リリースキーストア(ponshu_release.jks)を作成
  • android/key.properties にパスワードを設定
  • キーストアと key.properties が .gitignore に含まれていることを確認
  • flutter build apk --release --dart-define=GEMINI_API_KEY=<配布用キー> で APK ビルド
  • テスト端末でインストール・動作確認

Last Updated: 2026-02-16