Godotでaabファイルつくってアプリ公開しました

　Godot4.1.1で開発したゲームをGoogle Playで公開しました。
　ご興味があれば是非一度遊んでみてください。

https://play.google.com/store/apps/details?id=com.footinglow.android.tiltslalom&pli=1

　Google Playにアプリを公開するためには、apkファイルではなく、aab（Android App Bundle）というファイル形式にする必要があります。デジタル署名も必要です。その方法をまとめました。

:::note info
GoogleのAndroid Developperを参考にしました。というかそのままです。
https://developer.android.com/games/engines/godot/godot-export
:::

# APKファイルエクスポートの設定
　事前にAPKファイルのエクスポートができるようにしましょう。ここのプロジェクト設定や、デバッグ用キーストアの設定がaabファイルの作成にも必要です。

https://qiita.com/FootInGlow/items/cde673e0a424413ca109

# キーストアの作成
 Google Playに登録するアプリのaabファイルに、デジタル署名する必要があります。
 まずはデジタル署名に使う「キーストア」を作成しましょう。

:::note warn
　この後作成するキーストアファイルはとても大事なものです。無くした場合アプリを更新できなくなるので、大切に保管しましょう。間違ってgitなど、誰でもアクセスできるところには置かないように注意しましょう。
:::

（１）ターミナルを開く
　キーストアファイルを保存するフォルダを右クリックして、「ターミナルで開く」を実行しましょう。
　PowerShellが起動します。

（２）keytoolコマンドでキーストアファイルを作成しましょう。
 「GodotのExporting for Android」にあるように、keytoolコマンドでキーストアファイルを作成しましょう。

https://docs.godotengine.org/en/latest/tutorials/export/exporting_for_android.html#exporting-for-google-play-store

```
keytool -v -genkey -keystore mygame.keystore -alias mygame -keyalg RSA -validity 10000
```
 「mygame.keystore」はキーストアファイルのファイル名です。「-alias」の後の「mygame」がキーストア内エイリアス名です。管理しやすい名前を指定しましょう。
　あとで、Androidエクスポートプリセットの「リリース」にキーストアファイルを設定して、「Release User」にキーストア内エイリアス名を設定します。

　例として下記の表のように設定してみました。

| 項目 | 設定内容 |
|:-|:-|
| キーストアファイル名  | footinglow.keystore  |
| キーストア内エイリアス名  | footinglow  |
| キーストアのパスワード  | 忘れないものにしましょう  |
| 姓名  | 佐藤 勇太郎  |
| 組織単位名 | (未入力)  |
| 組織名 | (未入力)  |
| 住所  | 千葉県館山市  |

```
PS C:\user\keystore> keytool -v -genkey -keystore footinglow.keystore -alias footinglow -keyalg RSA -validity 10000
キーストアのパスワードを入力してください:
新規パスワードを再入力してください:
姓名は何ですか。
  [Unknown]:  SATO YUTARO
組織単位名は何ですか。
  [Unknown]:
組織名は何ですか。
  [Unknown]:
都市名または地域名は何ですか。
  [Unknown]:  TATEYAMA-SHI
都道府県名または州名は何ですか。
  [Unknown]:  Chiba
この単位に該当する2文字の国コードは何ですか。
  [Unknown]:  JP
CN=SATO YUTARO, OU=Unknown, O=Unknown, L=TATEYAMA-SHI, ST=Chiba, C=JPでよろしいですか。
  [いいえ]:  y

10,000日間有効な2,048ビットのRSAの鍵ペアと自己署名型証明書(SHA256withRSA)を生成しています
        ディレクトリ名: CN=SATO YUTARO, OU=Unknown, O=Unknown, L=TATEYAMA-SHI, ST=Chiba, C=JP
[footinglow.keystoreを格納中]
```
10000日有効なので、27年以上有効です。

# Androidビルドテンプレートのインストール...
 aabファイルをビルドするために必要な環境をインストールしましょう。

（１）「プロジェクト」メニューから「Androidビルドテンプレートのインストール...」を実行します。
![2023-10-03 (7).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691050/26d59165-8bd4-4802-191e-4647afef2e20.png)

（２）インストールの実行
　「インストール」ボタンを押下して、インストールを実行しましょう。
　プログレスバーで進捗状況がわかります。

（３）Androidビルドテンプレートのインストール先
　プロジェクトのトップ階層に「android」フォルダが作成されて、その中にインストールされるようです。

# エクスポートプリセットをつくる
　Androidのaabファイルをエクスポートするためのプリセットを作りましょう。

（１）「プロジェクト」メニューの「エクスポート」を実行
（２）「追加...」ボタンから「Android」を選択します
![2023-10-03 (3).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691050/9ad2dc92-46ec-0cc7-242a-f84616cec6f8.png)

（３）Android用のプリセットを編集しましょう
　
| 項目名 | 設定内容 |
|:-|:-|
| 名前  | Androidのaabファイル作成用の環境とわかる名前にしましょう  |
| エクスポート先のパス  | 拡張子は「.aab」です  |
| Use Gradle Build  | オン  |
| エクスポート形式  | Export AAB  |
| armeabi-v7a  | オン  |
| arm64-v8a  | オン  |
| リリース  | キーストアファイル  |
| Release User  | キーストアファイル作成時に「-alias」で設定したキーストア内エイリアス名  |
| Release Password  | キーストアのパスワード（平文で表示されるので、人に見られないようにしましょう）  |
| バージョン　コード  | リリースのたびにカウントアップします  |
| バージョン　名前  | リリースのたびに更新が必要です  |
| パッケージ　固有名  | 他と被らないユニークな文字列ということで悩みましたが、一番安直にcom.footinglow.android.$gennameとしました。  |
| パッケージ　名前  | ディフォルトのまま空欄です。プロジェクト設定の名前が使われるのだと思います。  |

![2023-10-05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691050/4e9450ba-8cfa-2dac-526a-3fd30865cd04.png)
パスワードは平文で表示されているため、消しました。ユーザ名は例の「footinglow」だけ残るようにしています。

![2023-10-07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691050/3e434407-788d-1922-4045-e6f93d736adc.png)


:::note warn
パスワードは「.godot\export_credentials.cfg」に平文で格納されています。取り扱いに注意しましょう。
:::



# aabファイルの作成実行
 「プロジェクトのエクスポート...」ボタンを押下して、aabファイルをエクスポートしましょう。
　この時に「デバッグ付きエクスポート」のチェックをはずしましょう。

![2023-10-05 (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691050/08d749b9-5bd2-9bcf-1d46-f4a2cd1835eb.png)

::: note info
　デバッグ付きエクスポートにチェックを入れたままエクスポートしたaabファイルをGoogle Play Consoleにアップロードすると「Android App Bundle は署名されていません。」とエラーになります。
:::

　初回は真っ黒なターミナルウインドウが開いて、何も表示されないため不安になりますが、しばらく（1分くらい？）待つとログが表示されます。

![2023-10-03 (16).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691050/216febf5-6acd-5606-7c60-d23ad26f515b.png)

最後はこんなログで終わります。スクショのタイミングが難しくて、画面が消えかかっているときにスクショしたのでちょっと色が薄いです。
![2023-10-03 (20).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691050/6f646ef2-63d7-7155-4653-3146879b368b.png)

# 終わりに
　一度設定すると簡単にaabファイルを出力できます。便利です。

以上です。