QtでAndroidアプリを作ろう for Qt5.14（環境構築編）

# 初めに

カレンダーに穴が空いてましたので、（カレンダー的に）連日投稿ですが、投稿させていただきます。
拙著「QtでAndroidアプリを作ろう」では、Qt5.13を対象に、Android NDK r19との組み合わせで、Qt/Androidアプリを作る環境について説明しました。
Qt5.13では、NDK r20との組み合わせが動作せず苦労しましたが、Qt5.14で正式にNDK r20がサポートされ、むしろ https://wiki.qt.io/New_Features_in_Qt_5.14 に「Android needs NDKr20+」との記述があることから、Qt5.14以降はNDK r20以上にする必要があるようです。
そこで、改めてQtとAndroid Studioの組み合わせで、ビルド環境を構築してみたいと思います。
拙著ではmacOSの画面で説明していましたので、今回はWindows10で説明してみたいと思います。

# インストール対象

インストール対象は下記の２つです。

* Android Studio
* Qt

JDKも必要ですが、Android Studioに含まれているものを使用する為、別途JDKをインストールする必要はありません。仮に、別のJDKがインストールされていても後述するJDKのパス設定にはAndroid Studioに含まれているJDKを指定したほうがよいです。

# Android Studioのインストール

https://developer.android.com/studio/?hl=ja
のページにブラウザでアクセスし、「DOWNLOAD ANDROID STUDIO」をクリックします。
![Android_install1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/69678/f1db81f5-2c6c-637c-8846-7e57ab244090.png)

利用規約が表示されますので、「上記の利用規約を読んだうえで利用規約に同意します。」にチェックを付け、「ダウンロードする: ANDROID STUDIO ( WINDOWS用 )」をクリックします。すると、インストーラがダウンロードできますので、ダウンロードして実行します。
インストーラの画面では、基本的は、単純にNext > Next > Next > Install > Next > Finsishとクリックするだけです。

# Android Studio起動後の設定（Android SDK/NDKの設定）

Androidのインストールが完了したら、WindowsのメニューからAndroid Studioを起動します。
Configure > SDK Manager を選択します。

## 「SDK Platforms」タブ

![Android_setting1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/69678/ae4faa72-4db7-6768-743a-60780893f89e.png)

Qt5.14では、API Level26～29をサポートしている為、これらのAPI Levelにチェックを付けます。

## 「SDK Tool」タブ
次に、「SDK Tool」に移動します。
![Android_setting2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/69678/d06ca71b-40dd-455e-320c-9167f884d2fc.png)
ここでは、NDKにチェックを付けます。インストール状況によってNKD(Side by Side)のように表示されることもあります。
スクリーンショットでは、一応NDKに関連しそうなLLDBとCMakeにもチェックを入れてありますが、なくても動くはすです。
ただ、Android Studio側だけでC++のコードをデバッグしたい時など、あると便利なのでチェックを入れています。

あとは、OKボタンを押下し、必要なモジュールをダウンロードします。（ここで時間が結構掛かるかもしれません）

# Qtのインストール

[Qtのダウンロードページ](https://www.qt.io/download-qt-installer?hsCtaTracking=99d9dd4f-5681-48d2-b096-470725510d34%7C074ddad0-fdef-4e53-8aa8-5e8a876d6ab4)で、Downloadをクリックして、インストーラをダウンロードします。
インストール手順については、このページを見ている方は特に必要ないかと思いますが、最初のステップだけ。
インストーラ起動後、Qtのアカウント等を持っていなければ、Next > Skip であとは手なりで進めてOKです。
以降については、MaintenanceToolを起動した時と同じである為、次の項目に移ります。

## MaintenanceTool

MaintenanceToolは、インストール時に何も変更しなければ、「C:\Qt」にインストールされているかと思います。
「C:\Qt」直下にMaintenanceTool.exeをダブルクリックするとMaintenanceToolが起動されます。（インストーラの続きでもあります）
Qtインストール直後であれば、「Add or remove components」を選択し、次へをクリックします。

「Show package categories」欄で、「Latest release」にチェックをつけて、Refreshボタンをクリックすると、Qt 5.14.0が表示されます。
![Qt_MaintenanceTool1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/69678/7a769c1f-1f46-acb4-631d-981c535da489.png)
Qt5.14.0配下の「Android」にチェックを付け、次へボタンをクリックして更新します。

## Qt Creator起動後の設定

Qt Creatorを起動し、ツール > オプションを選択します。
設定する箇所は下記の３つです。

* JDKパス
* Android SDKパス
* Android NDKパス

JDKは（デフォルトのままであれば）「C:\Program Files\Android\Android Studio\jre」を指定します。
Qt Creatorが認識すれば「Java Settings are OK.」と表示されます。

Android SDKパスは、「C:\Users\[[ユーザ名]]\AppData\Local\Android\Sdk」を指定します。
Android NDKパスは、「C:\Users\[[ユーザ名]]\AppData\Local\Android\Sdk\ndk\20.1.5948944」を指定します。
末端の細かいリビジョンについては、インストール状況によって変わってくると思われます。
Android SDKとNDKをQt Creatorが認識すれば、「Android setttings are OK.」と表示されます。
もし、表示されない場合は、NDKのバージョン（リビジョン）を下げることを検討してください。
https://developer.android.com/ndk/downloads/older_releases.html?authuser=3&hl=ja に、NDKのアーカイブがあります。

![Qt_Android_setting.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/69678/7bb804c7-d8d4-b740-d4a9-739ce815612b.png)

以上で設定は終了です。
拙著では、パスを通すなど、環境変数の設定についても言及しましたが、まっさらなWindows10 PCで本稿の手順でインストールしたところ、環境変数は特に設定せずに動作しましたので、少なくとも現時点の環境では、特に必要ないかと思います。

# 設定完了後の「Kits」の状態

蛇足ですが、設定完了後のQt Creatorの設定画面にある「Kits」状態のスクリーンショットを載せておきます。
![kits1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/69678/268178d1-37fe-5357-000e-591c3d2ebeff.png)
![kits2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/69678/5d115501-874a-0003-7bc0-76937f7337ce.png)
![kits3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/69678/afe42f59-15ce-a317-7baf-67001b91990e.png)

ぜひQtでAndroidアプリを作ってみてください。