Windowsで.Net Mauiを用いてクロスプラットフォームアプリケーションを開発する際に、大体はAndroid Studioをインストールするかと思います。ただ自分は普段VSCodeで開発していることもあり、AndroidアプリをデバックするためだけにわざわざIDEまで入れるのもなんか無駄な気がしたのですが、地味にめんどくさかったので備忘録的に残しておきます。
正直こんな方法しなくても楽な方法なありそうな気もしますが(というか素直にAndroid Studio入れた方が楽)、出来てしまったものはしょうがない。
前提環境
- Windows 11
- VSCode
- .Net Mauiプロジェクト自体はVSCode上で作成できる状態
手順
プロジェクトのビルド
.Net Mauiのルートプロジェクトに移動し、以下のコマンドを実行します。
dotnet build -t:InstallAndroidDependencies -f:net9.0-android -p:AndroidSdkDirectory=$Env:LOCALAPPDATA+"/Android/Sdk" -p:AcceptAndroidSDKLicenses=True
「-tInstallAndroidDependencies」は、.Net MauiをAndroid向けにインストールする際に必要なSDKなどを併せてインストールするための引数で、「-p:AndroidSdkDirectory」でAndroidSDKのインストール先を指定しています。インストール先自体は、マイクロソフトの公式ドキュメントで推奨されている、ユーザーのAppDataフォルダ内にインストールしています。さらに、「-p:AcceptAndroidSDKLicenses=True」で、Android SDKのライセンス規約への同意もあわせてしています。
また、「-f:net9.0-android」でビルド時のフレームワークを指定しています。ここは実際に使用する.Netのバージョンをもとに適宜変更してください。
sdkmanagerでエミュレータ関連のパッケージをインストール
先ほどの手順でAndroidSDKと併せて、Command-Lineツールも同時にインストールされています。ただしパスが通っておらずこのままでは使用できないため、以下のパスを通します。
%LOCALAPPDATA%\Android\Sdk\cmdline-tools\[インストールされているコマンドラインツールのバージョン]\bin
パスを通したあと、以下のコマンドを実行します。
sdkmanager --list
パスが無事通っていれば大量に出力されますが、「Installed packages:」の部分がインストール済みのパッケージ(ビルド時にインストールされたもの)で、「Available Packages」の部分が利用可能なパッケージになっています。
続いて、以下コマンドを実行しエミュレータ本体をインストールします。
sdkmanager emulator
さらにエミュレータで使用するAndroid自体のイメージをインストールします。
sdkmanager "system-images;android-35;google_apis_playstore;x86_64"
先ほど「list」で出力した結果の「Available Packages」の部分のうち、「system-images」が先頭についているパッケージがAndroidのイメージです。IntelCPUのWindowsであれば末尾が「x86_64」のものであれば動作します。
Androidのバージョンについては「android-35」の部分の数字部分で設定します。この数字がAPIレベルと呼ばれるもので、Androidのバージョンとの対比は、SDK Platform リリースノートに書いています。
エミュレータの端末の作成
先ほどインストールしたemulatorは以下にインストールされているので、そのパスを通します。
%LOCALAPPDATA%\Android\Sdk\emulator\
これによりemulatorコマンドを実行できるようになりますので、以下のコマンドを実行して、エミュレータを作成します。
avdmanager --verbose create avd --force --name "android_35" --package "system-images;android-35;google_apis_playstore;x86_64" --tag "google_apis_playstore" --abi "x86_64"
「–name」の部分ついてはエミュレータの名前になるので任意につけてください。「–package」については、先ほどインストールしたAndroidイメージのパッケージ名を指定してください。
以下コマンドを実行し、作成したエミュレータが表示されていれば成功です。
emulator -list-avds
エミュレータの起動とデバック設定
以下コマンドを実行し、エミュレータを起動します。
emulator -avd [作成したエミュレータの名前]
しばらくすると以下の画像のようなエミュレータが起動します。
起動後、VSCodeのコマンドパレットからそれぞれ以下の操作をします。
- 「.NET MAUI: Pick Startup Project」を選択し、.Net Aspireプロジェクトを選択します
- 「.NET MAUI: Pick Android Device」を選択し、先ほど作成したエミュレータを選択します。
- 「.NET MAUI: Pick Startup Device」を選択し、先ほど作成したエミュレータを選択します。
これでデバック実行すると、エミュレータ上で.Net MAUIのアプリが起動します。
余談
今回はエミュレータを立ち上げて.Net Mauiを実行する部分にフォーカスを当てていたのでスルーしましたが、ビルド時にインストールされたコマンドラインツールについては固定バージョンまでが名前になっているパッケージのため、「sdkmanager –update」など実施してもメジャーバージョンは更新されません。
そのためsdkmanagerで一度「cmdline-tools;latest」をインストールしたうえで改めてパスを通しなおした方が今後開発していくのであれば望ましいと思います。
sdkmanager "cmdline-tools;latest"