6.7 KiB
6.7 KiB
配布用 Gemini API キー設定ガイド
このガイドは、知人配布用 APK に埋め込む 専用 Gemini API キー を発行・設定する手順書です。
なぜ専用キーが必要か
開発用キー(lib/secrets.local.dart に設定済み)をそのまま配布 APK に使うと:
- APK を逆コンパイルすれば誰でもキーを抽出できる
- あなたのクォータ(無料枠)を知らない第三者に使い尽くされる可能性がある
- キーを無効化すると開発環境も壊れる
解決策: 配布専用キーを発行し、Androidパッケージ名で制限する。
手順
1. Google Cloud Console で新しい API キーを発行
- Google AI Studio にアクセス
- 右上のメニューから「Get API key」→「Create API key in new project」
- または既存プロジェクトに追加: 「Create API key」→ プロジェクト選択
- 発行されたキーをメモ(
AIzaSy...形式)
2. API キーに制限を設定
Google Cloud Console API 認証情報ページ にアクセス:
- 作成したキーをクリック → 「キーを編集」
- API の制限:
- 「キーを制限する」を選択
- 「Generative Language API」のみ選択
- アプリケーションの制限:
- 「Android アプリ」を選択
- 「アイテムを追加」をクリック
- パッケージ名:
com.posimai.ponshu_room_lite - SHA-1 証明書フィンガープリント: (後述)
- 保存
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...(配布用キー) ^
--obfuscate ^
--split-debug-info=build\debug-info
--obfuscate: クラスや関数名を難読化し、逆コンパイル時に解析されにくくする--split-debug-info: デバッグシンボルを APK 本体から分離して保存(APK サイズ削減)build\debug-infoフォルダは git 管理外でよい(ローカルに保持しておく)
出力ファイル: build\app\outputs\flutter-apk\app-release.apk
難読化なしの簡易ビルド(動作確認用):
flutter build apk --release --dart-define=GEMINI_API_KEY=AIzaSy...(配布用キー)
7. Pro版のビルド(オプション)
Pro版機能を有効化したAPKをビルドする場合(パッケージ名は com.posimai.ponshu_room_lite のまま変わりません):
flutter build apk --release ^
--dart-define=GEMINI_API_KEY=AIzaSy...(配布用キー) ^
--dart-define=IS_PRO_VERSION=true ^
--obfuscate ^
--split-debug-info=build\debug-info
配布方法
Google Drive 経由(推奨)
app-release.apkを Google Drive にアップロード- 共有リンクを知人に送付
- 受信者は Android の「設定 > セキュリティ > 提供元不明のアプリ」を有効化してインストール
LINE で直接送信
- APKファイルをLINEのトーク画面にドラッグ&ドロップ
- 受信者がファイルをタップしてインストール
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=<配布用キー> --obfuscate --split-debug-info=build\debug-infoで APK ビルド- テスト端末でインストール・動作確認
Last Updated: 2026-02-16