本日はUnityの小ネタ枠です。
Unityで過去のAndroidSDKをインストールする方法です。
過去のAndroidSDKをインストールできない場合
特定のUnityバージョンでは古いAndroidSDKを自動インストールできず、以下のようなエラーメッセージで手動インストールを要求される場合があります。
Android SDK does not include your Target SDK of (SDKバージョン). Please use the ANdroid SDK Manager to install your target SDK version.

今回のケースでは[TargetAPILevel]を[Android 9.0(API level 28)]に設定したケースで発生しました。
エラーメッセージに従い、手動でAPI level 28のAndroidSDKをインストールしてみます。

AndroidSDKフォルダを開く
Unityプロジェクトが参照しているAndroidSDKのルートフォルダを確認します。
メニューから[Edit -> Preferences...]を開き、[External Tools]タブの[Android SDK Tools Installed with Unity]のパスを開きます。

ここで設定されているパスがAndroidSDKのルートフォルダになります。

Android SDK Managerのインストール
指定のAndroidSDKをインストールするにはSDKManagerのコマンドラインツールを利用します。
コマンドラインツールは以下のフォルダにインストールされています。
(AndroidSDKのルートフォルダ)/cmdline-tools

ただしUnityのバージョンによってはインストールされていない場合があります。
また特定のバージョンではSDKManagerが正常に動作しないケースもあるようです。

今回は以下の手順に従ってバージョン5.0のSDKManagerを取得し、ルートフォルダ配下にコピーしました。
bluebirdofoz.hatenablog.com

コピーしたSDKManagerのフォルダはルートフォルダを認識できるように、フォルダ名をlatestに変更しておきます。
詳細は前述のコマンドラインツールのインストール手順記事を参照ください。

これでSDKManagerのインストールは完了です。
AndroidSDKのインストール
コマンドラインツールを使ってAndroid SDKのインストールを行うため、WindowsPowerShellを起動します。
管理者権限が必要なフォルダで作業を行う場合は[管理者として実行する]必要があります。

PowerShellを起動したらcdコマンドでAndroidSDKのルートフォルダに移動します。
cd (ルートフォルダ)

以下のコマンドを実行して指定バージョンのAndroidSDKをインストールします。
.\cmdline-tools\latest\bin\sdkmanager.bat "platforms;android-(SDKのバージョン)"

Javaがインストールされていない場合
Javaがインストールされていない場合、以下のエラーが発生します。
インストールを行うかJAVA_HOMEのパスを通してコマンドを実行してください。
ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.

今回筆者はUnityEditorに内包されているjavaフォルダに以下の通り、一時的にパスを通してコマンドを実行しました。
$env:JAVA_HOME = '"C:\Program Files\Unity\2021.3.30f1\Editor\Data\PlaybackEngines\AndroidPlayer\OpenJDK\jbr"' .\cmdline-tools\latest\bin\sdkmanager.bat "platforms;android-28"

インストールが実行されます。
途中のインストール確認で[y]キーを打ち込むとインストールが完了します。

platformsフォルダ配下を確認すると[android-28]フォルダが作成されています。

これで過去バージョンのAndroidSDKのインストールは完了です。
再度ビルドを実行すると正常にapkファイルが出力されました。
