2026-02-16 10:08:09 +00:00
|
|
|
|
# 配布用 Gemini API キー設定ガイド
|
|
|
|
|
|
|
|
|
|
|
|
このガイドは、知人配布用 APK に埋め込む **専用 Gemini API キー** を発行・設定する手順書です。
|
|
|
|
|
|
|
|
|
|
|
|
## なぜ専用キーが必要か
|
|
|
|
|
|
|
|
|
|
|
|
開発用キー(`lib/secrets.local.dart` に設定済み)をそのまま配布 APK に使うと:
|
|
|
|
|
|
- APK を逆コンパイルすれば誰でもキーを抽出できる
|
|
|
|
|
|
- あなたのクォータ(無料枠)を知らない第三者に使い尽くされる可能性がある
|
|
|
|
|
|
- キーを無効化すると開発環境も壊れる
|
|
|
|
|
|
|
|
|
|
|
|
**解決策**: 配布専用キーを発行し、Androidパッケージ名で制限する。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 手順
|
|
|
|
|
|
|
|
|
|
|
|
### 1. Google Cloud Console で新しい API キーを発行
|
|
|
|
|
|
|
|
|
|
|
|
1. [Google AI Studio](https://aistudio.google.com/) にアクセス
|
|
|
|
|
|
2. 右上のメニューから「Get API key」→「Create API key in new project」
|
|
|
|
|
|
- または既存プロジェクトに追加: 「Create API key」→ プロジェクト選択
|
|
|
|
|
|
3. 発行されたキーをメモ(`AIzaSy...` 形式)
|
|
|
|
|
|
|
|
|
|
|
|
### 2. API キーに制限を設定
|
|
|
|
|
|
|
|
|
|
|
|
[Google Cloud Console API 認証情報ページ](https://console.cloud.google.com/apis/credentials) にアクセス:
|
|
|
|
|
|
|
|
|
|
|
|
1. 作成したキーをクリック → 「キーを編集」
|
|
|
|
|
|
2. **API の制限**:
|
|
|
|
|
|
- 「キーを制限する」を選択
|
|
|
|
|
|
- 「Generative Language API」のみ選択
|
|
|
|
|
|
3. **アプリケーションの制限**:
|
|
|
|
|
|
- 「Android アプリ」を選択
|
|
|
|
|
|
- 「アイテムを追加」をクリック
|
|
|
|
|
|
- パッケージ名: `com.posimai.ponshu_room_lite`
|
|
|
|
|
|
- SHA-1 証明書フィンガープリント: (後述)
|
|
|
|
|
|
4. 保存
|
|
|
|
|
|
|
|
|
|
|
|
### 3. リリース署名の SHA-1 フィンガープリントを取得
|
|
|
|
|
|
|
|
|
|
|
|
配布 APK はリリースキーストアで署名する必要があります。
|
|
|
|
|
|
|
|
|
|
|
|
**キーストアが未作成の場合(Windowsコマンドプロンプト):**
|
|
|
|
|
|
|
|
|
|
|
|
```cmd
|
|
|
|
|
|
keytool -genkeypair -v -keystore android\app\ponshu_release.jks -keyalg RSA -keysize 2048 -validity 10000 -alias ponshu_key
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
パスワードを設定し、組織情報を入力。
|
|
|
|
|
|
|
|
|
|
|
|
> ⚠️ **パスワードは安全な場所に記録してください。紛失するとアプリの更新ができなくなります。**
|
|
|
|
|
|
|
|
|
|
|
|
**SHA-1 の取得(Windowsコマンドプロンプト):**
|
|
|
|
|
|
|
|
|
|
|
|
```cmd
|
|
|
|
|
|
keytool -list -v -keystore android\app\ponshu_release.jks -alias ponshu_key
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
出力の `SHA1:` 行をコピーして Google Cloud Console に貼り付ける。
|
|
|
|
|
|
|
|
|
|
|
|
### 4. key.properties にパスワードを設定
|
|
|
|
|
|
|
|
|
|
|
|
`android/key.properties` を新規作成(このファイルは .gitignore に含まれています):
|
|
|
|
|
|
|
|
|
|
|
|
```properties
|
|
|
|
|
|
storePassword=あなたが設定したパスワード
|
|
|
|
|
|
keyPassword=あなたが設定したパスワード
|
|
|
|
|
|
keyAlias=ponshu_key
|
|
|
|
|
|
storeFile=ponshu_release.jks
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 5. build.gradle.kts にリリース署名を設定
|
|
|
|
|
|
|
|
|
|
|
|
`android/app/build.gradle.kts` を以下のように変更:
|
|
|
|
|
|
|
|
|
|
|
|
```kotlin
|
|
|
|
|
|
import java.util.Properties
|
|
|
|
|
|
|
|
|
|
|
|
// key.properties からリリース署名情報を読み込み
|
2026-02-16 10:17:41 +00:00
|
|
|
|
val keyPropertiesFile = rootProject.file("key.properties")
|
2026-02-16 10:08:09 +00:00
|
|
|
|
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 のビルド
|
|
|
|
|
|
|
|
|
|
|
|
```cmd
|
2026-02-16 15:21:54 +00:00
|
|
|
|
flutter build apk --release ^
|
|
|
|
|
|
--dart-define=GEMINI_API_KEY=AIzaSy...(配布用キー) ^
|
|
|
|
|
|
--obfuscate ^
|
|
|
|
|
|
--split-debug-info=build\debug-info
|
2026-02-16 10:08:09 +00:00
|
|
|
|
```
|
|
|
|
|
|
|
2026-02-16 15:21:54 +00:00
|
|
|
|
- `--obfuscate`: クラスや関数名を難読化し、逆コンパイル時に解析されにくくする
|
|
|
|
|
|
- `--split-debug-info`: デバッグシンボルを APK 本体から分離して保存(APK サイズ削減)
|
|
|
|
|
|
- `build\debug-info` フォルダは git 管理外でよい(ローカルに保持しておく)
|
|
|
|
|
|
|
2026-02-16 10:08:09 +00:00
|
|
|
|
出力ファイル: `build\app\outputs\flutter-apk\app-release.apk`
|
|
|
|
|
|
|
2026-02-16 15:21:54 +00:00
|
|
|
|
> 難読化なしの簡易ビルド(動作確認用):
|
|
|
|
|
|
> ```cmd
|
|
|
|
|
|
> flutter build apk --release --dart-define=GEMINI_API_KEY=AIzaSy...(配布用キー)
|
|
|
|
|
|
> ```
|
|
|
|
|
|
|
2026-02-16 15:46:57 +00:00
|
|
|
|
### 7. Pro版のビルド(オプション)
|
|
|
|
|
|
|
|
|
|
|
|
Pro版機能を有効化したAPKをビルドする場合(パッケージ名は `com.posimai.ponshu_room_lite` のまま変わりません):
|
|
|
|
|
|
|
|
|
|
|
|
```cmd
|
|
|
|
|
|
flutter build apk --release ^
|
|
|
|
|
|
--dart-define=GEMINI_API_KEY=AIzaSy...(配布用キー) ^
|
|
|
|
|
|
--dart-define=IS_PRO_VERSION=true ^
|
|
|
|
|
|
--obfuscate ^
|
|
|
|
|
|
--split-debug-info=build\debug-info
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2026-02-16 10:08:09 +00:00
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 配布方法
|
|
|
|
|
|
|
|
|
|
|
|
### Google Drive 経由(推奨)
|
|
|
|
|
|
1. `app-release.apk` を Google Drive にアップロード
|
|
|
|
|
|
2. 共有リンクを知人に送付
|
|
|
|
|
|
3. 受信者は Android の「設定 > セキュリティ > 提供元不明のアプリ」を有効化してインストール
|
|
|
|
|
|
|
|
|
|
|
|
### LINE で直接送信
|
|
|
|
|
|
1. APKファイルをLINEのトーク画面にドラッグ&ドロップ
|
|
|
|
|
|
2. 受信者がファイルをタップしてインストール
|
|
|
|
|
|
|
|
|
|
|
|
### adb 直接転送(テスト時)
|
|
|
|
|
|
```cmd
|
|
|
|
|
|
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` に含まれていることを確認
|
2026-02-16 15:21:54 +00:00
|
|
|
|
- [ ] `flutter build apk --release --dart-define=GEMINI_API_KEY=<配布用キー> --obfuscate --split-debug-info=build\debug-info` で APK ビルド
|
2026-02-16 10:08:09 +00:00
|
|
|
|
- [ ] テスト端末でインストール・動作確認
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
**Last Updated**: 2026-02-16
|