【GameMaker Studio2】Androidのビルドセットアップ手順

現在 Steam で GameMaker Studio2 関連のものがセール中(33%引き)となっています
* https://store.steampowered.com/app/585410/GameMaker_Studio_2_Desktop/
![Steam_で_33__オフ_GameMaker_Studio_2_Desktop.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43772/a6729c1f-549d-4732-3c59-3982a7adf4a7.png)

"2020年9月8日まで" のセールとなっているので、購入予定の方はお早めに……！
私もせっかくなのでこの機会に Mobileビルドモジュールを購入しました。（すでにHTML5は持っていたので、バンドルセットを選んで41%引き）

ということで、ここでは、Androidの環境セットアップ手順を紹介します。
大まかな手順としては以下のとおりです。

1. Android Studioをインストールして、SDK/NDKをインストール
2. GameMaker Studio2側でSDK/NDKなどのパスを設定
3. キーストアの作成
4. デバイス接続設定・転送

参考にした元の情報は公式ページにまとまっているので、ここを読めばだいたい解決できます。
* https://help.yoyogames.com/hc/en-us/articles/115001368727-Setting-Up-For-Android-or-Amazon-Fire

# 1. Android Studioをインストールして、SDK/NDKをインストール
まずは "Android Studio" のインストールです。以下からダウンロードを行い、インストーラーを実行します。
* https://developer.android.com/studio

![001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43772/02505360-ef91-2be4-a6d7-e5c6198cb8fe.png)
新規で設定を行う場合は、"Do not import setting" を選択。

![002.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43772/72c73152-b6f2-4acb-6a65-88603fb20a7f.png)
Data Sharingの送信は無効にする ("Don't send" を選択）

![003.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43772/9d1c77bf-0afd-64f8-134e-993216f7e0df.png)
Nextをクリック

![004.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43772/86480240-19c8-82dc-7e7d-0fce807a54e8.png)
Install Typeは「Standard」を選択

![005.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43772/86db0b7b-e531-e64e-7ae7-b306df3d540c.png)
UIテーマは任意のものを選択

![006.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43772/78aedbec-e1c3-c9c2-5864-5f5144a79bef.png)
Verify Settingを確認してインストールを開始

> ※ "SDK Folder" / "JDK Location" の設定は後で GameMaker Studio2 側で設定するので、パスをメモしておいたほうが良いです
> ※ "SDK Folder" については、後で "Android SDK Location" という項目で表示されます

![007.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43772/2b5b2446-e6dd-5151-deca-405f40b9f2ac.png)
ダウンロードが始まるので、しばらく待ちます。
途中でインストール権限の確認が表示される場合は、適切に許可をします。

![008.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43772/c91dd1b0-363b-4772-c533-35dc8f6deee6.png)
インストールが終わったら "FINISH" で終了します。

次に、Welcomeページから`Configure > SDK Manager` を選択します。
![009.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43772/d685994c-ff9a-19a6-0c7f-4f0c35baad9c.png)

![010.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43772/5ebe47c5-0e71-41eb-01f6-f8b9db789867.png)
1. "Android SDK Location" をテキストにコピーしておきます（以前表示された "SDK Folder" と同じものです）**※注意：このパスを変更する場合、空白文字や全角文字が含まれない短いパスにすると、余計な不具合に悩まされる可能性が減ります**
2. `SDK Tools` のタブをクリックします
3. `Show Package Details` にチェックを入れます

すると各ツールの詳細な設定ができるようになるので、
* Android SDK 29.0.2
* NDK 20.0.5594570
にチェックを入れます。

![011.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43772/ba02977b-c822-569a-57c3-f3655ee6c8e6.png)
![012.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43772/343555db-7904-abb9-4a23-6faf521855df.png)

2020.9.5 現在 (v2.3.0) ではこのバージョンが推奨されていますが、今後はもう少し上のバージョンに変更される可能性があります。
参考ページ ⇢ https://help.yoyogames.com/hc/en-us/articles/227860547

* We recommend Android API 29 / NDK 20 for all projects. API 29 is only supported in 2.2.4+.
* For your JDK location, use the location of the OpenJDK 8 install which is included by default in your Android Studio installation. Gradle does not support any version of JDK 9 or newer, so stick with this Android Studio version.

2020.9.5時点では、"Android API 29" / "NDK 20" が推奨環境のようです。

![013.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43772/4ddb31ce-c57a-4d96-1c3a-d1cda04d3c96.png)
ということで、インストール設定ができたら、`OK`を押してインストールを開始します。
![014.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43772/6745fd22-676c-80f2-063d-38dc27381fb6.png)
確認画面が表示されるので、OKを押します。
（画像ではすでにインストールされた最新のものを削除していますが、特に消す必要はないのかもしれません
![015.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43772/a2938581-53c9-395b-b364-8f36725e1257.png)
ライセンス確認が表示されるので、"Accept" を選んで、"Next"をクリックします。
![016.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43772/ade52667-7fbe-2bdf-cde8-19bc785e05d6.png)
インストールが開始するので、しばらく待ちます。
![017.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43772/30ece4e7-f8d9-dd2a-90a1-092ce22ce1c7.png)
インストールが完了したら `Finish` をクリック。

これでツールのインストールは完了です。
次は、GameMaker Studio2 側の設定です。

# 2. GameMaker Studio2側でインストールしたパスを設定
GameMaker Studio2を起動してプロジェクトを開きます。
![018.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43772/f257cd98-5d2a-17c2-1990-b0f162bf7a0e.png)
そして環境設定 "Preferences" を選択。

![019.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43772/2b575593-38da-9b67-48de-d0433835b941.png)

`Platform Settings > Android` でAndroid用の設定を開きます。
![020.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43772/e6cd6566-62c8-cf50-164e-6ad23580aa14.png)

"Android SDK location / Android NDK location / Java JDK location" の３つの項目を設定します。私の環境では以下のようになりました。

* **Android SDK location**: /Users/syun/Library/Android/sdk
* **Android NDK location**: /Users/syun/Library/Android/sdk/ndk/20.0.5594570
* **Java JDK location**: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home

NDK は SDKフォルダの中にバージョンごとに分けてインストールされます（Side by Sideの場合)。

さらにこの画面で、キーストア（認証キーのようなもの）の生成を行います。画面は開いたままで次の項へ……

# 3. キーストアの作成
先程のパス設定画面を下にスクロールすると、以下の項目があります。

* **Filename**: キーストアファイルのパス（最初は設定不要）
* **Common Name**: あなたの名前を入れる
* **Password**: パスワード (6文字以上)
* **Alias**: キーストアのユーザ名
* **Alias**: キーストアのパスワード
* **Organisations Unit**: 組織単位
* **Organisation**: 組織名
* **Location**: 拠点とする場所 ("Tokyo" など)
* **Country**: 国を示す2文字のコード (日本なら"JP")

`Filename` は特に記入せずに、それ以外の項目に適切に入力します。おそらくですが、パスワード以外はあまり重要でないような気がします。気になる場合は 「Android　キーストア」でGoogle検索すると色々見つかると思うので、そのあたりを参考に入力します。（この設定情報はスクリーンショットを撮っておくなどして、保管しておくほうが良いようです）

入力ができたらキーストアの出力です。
![021.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43772/27ed1b9c-3fd7-ee4b-1d1a-4917d2d492b1.png)
`Generate Keystore` をクリックして、キーストアを生成します。
![022.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43772/276b134b-9fc9-aea5-874d-acfb91a19b2a.png)
保存先を決めて適切な場所に保存します。私の環境では `/Users/syun/GameMakerStudio2/keystore/keystore.keystore` としました。

これでキーストアの作成は完了です。

# 4. デバイス接続設定・転送
最後にデバイスの接続設定です。
Androidにアプリを転送するには 端末側の "開発者オプション > USBデバッグ" を有効にする必要があります。
私の持っている端末は Galaxy だったので、ここを参考に有効化しました
https://appllio.com/android-development-mode-settings

なお、"macOSのみ" ファイル転送を有効にするため、以下の Android ファイル転送アプリをインストールする必要があります。
https://www.android.com/filetransfer/

PC(macOS)と端末を接続し、転送の準備ができたら、GameMaker Studio2に戻って、右上のビルド設定から、`Platform > Android` を選択します。
![025.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43772/a46a4e61-0b92-2cb7-f98f-d134dbaf362c.png)
そして、Device のとなりにある鉛筆アイコンをクリックします。

![026.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43772/69d2680f-a5ea-8bca-08d0-ac19df517541.png)
Device Editorが開くので、`Detect Device` をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43772/27c38f69-8e01-45a2-b149-adee18f08f99.png)
画像のようにデバイスが検出できたら `Test Connection` をクリックしてテスト接続を試します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43772/af1ecff5-a202-91b9-1446-2e0311fb84f3.png)
接続が正しく行われれば、"Connection to #### Successful" のメッセージが表示されます。
私の環境では、最初うまく行かず、端末とUSBを抜き差ししたら許可設定が再び表示され、それを了承したらうまくいきました。

最後に、ゲーム側の設定の "Game Options"（GameMaker Studio2 のツールバーにある歯車アイコン）をクリックして、`設定画面 > Android` を表示します。

![027.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43772/5b42ace5-2d92-659f-b5d8-9d9469bc0562.png)

* Build Settings から、API Level29 を設定
* Build Tools を "29.0.2" に変更

Support Library の設定は現在使われていないみたいなので、未設定でも良いようです。

![028.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43772/125f4a02-ee80-f85e-bb1f-c76bcb5c68ed.png)

それと、`Architecture` の設定に全てチェックを入れておきます。

これですべて設定完了！
F5で実行すると、実機にアプリが転送される……はずなのですが、私の環境では以下のエラーが表示されました。

> Error : The selected Architecture options do not support this device. Please add Arm64

Achitecture の設定はしたはずなのになぁ……と調べてみると以下の情報が。

https://forum.yoyogames.com/index.php?threads/error-the-selected-architecture-options-do-not-support-this-device-please-add-arm64.65859/
> Unfortunately, GMS2 has been known to give the incorrect error message before, specifically for building too Android.
残念ながら、GMS2は、特にAndroidをビルドするために、以前に誤ったエラーメッセージを表示することが知られています。

間違ったエラーメッセージだったのか……。
ともかく、原因がよくわからなかったので、GameMaker Studio2 を再起動して、クリーンビルドしたら……うまくいきました！

![galaxy2.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43772/0c1ba34d-2586-ec96-b54f-74fdc4f5cc2c.gif)
作成中の脱出ゲームが無事 Galaxy で動きました。やったぜ！