VSCode & .NET MAUIでAndroidアプリ開発環境を構築する【Ubuntu on WSL】
初稿:
更新:
- 6 min read -

この記事のゴール
- Ubuntu on WSL2でリモート実行しているVSCodeに、.NET MAUIアプリ開発環境を構築する
- 構築する項目は以下のとおり
- .NET MAUIテンプレートからプロジェクトを新規作成する
- Android emulatorを起動する
- Androidアプリをデバッグする
VSCode & .NET MAUIでAndroidアプリ開発環境を構築する【Windows】
VSCode(Windows)に、.NET MAUIアプリの開発環境を構築する。テンプレートからプロジェクトを新規作成し、Android emulatorでAndroidアプリをデバッグできるようにする。一連の設定手順をまとめる。
環境
- OS - Ubuntu22.04LTS on WSL2 (Windows 11 Pro)
- VSCode - v1.91.1
- .NET - v8.0.303
- Android - API Level 34
前提
WSL2およびVSCodeのリモート開発環境が構築済みであること。
作業一覧
- .NET 8.0 インストール
- Microsoft OpenJDK 17 インストール
- Android command line tools インストール
- Android SDK インストール
- Android Emulatorインストール・設定
- .NET MAUI 拡張機能インストール
- .NET MAUIプロジェクト作成
- デバッグ実行する
作業詳細
.NET 8.0 インストール
- インストールスクリプトをダウンロード
$ wget https://dot.net/v1/dotnet-install.sh -O dotnet-install.sh
- 実行権限を付与
$ chmod +x ./dotnet-install.sh
- 最新の長期サポート(LTS)SDKをインストール
$ ./dotnet-install.sh --version latest
- bash設定ファイル(.profile | .bash_profile | .bashrc etc)に次を追加し、PATHを通す
export DOTNET_ROOT=$HOME/.dotnet
export PATH=$PATH:$DOTNET_ROOT:$DOTNET_ROOT/tools
- source ~/.bash_profile を実行、またはターミナルを再起動して設定を読みこむ
Microsoft OpenJDK 17 インストール
- リポジトリにパッケージを追加する
$ ubuntu_release=`lsb_release -rs`
$ wget https://packages.microsoft.com/config/ubuntu/${ubuntu_release}/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
$ sudo dpkg -i packages-microsoft-prod.deb
- OpenJDK 17をインストール
$ sudo apt-get install -y apt-transport-https
$ sudo apt-get update
$ sudo apt-get install -y msopenjdk-21
Android command line tools インストール
- ~/Android にSDKおよび必要なツールをインストールしていく
- 必要なパッケージを事前インストール
sudo apt update
sudo apt install -y unzip
- Android command-line toolsをダウンロード・インストール
$ mkdir ~/Android
$ cd ~/Android
$ wget https://dl.google.com/android/repository/commandlinetools-linux-8092744_latest.zip -O commandlinetools.zip
$ unzip commandlinetools.zip
$ rm -f commandlinetools.zip
- bash設定ファイルにパスを追加
export ANDROID_HOME=$HOME/Android
export PATH=$PATH:$ANDROID_HOME/cmdline-tools/bin
export PATH=$PATH:$ANDROID_HOME/platform-tools
source ~/.bash_profile を実行、またはターミナルを再起動して設定を読みこむ
android command line toolsを最新版に更新する
$ sdkmanager "cmdline-tools;11.0"
Android SDK インストール
- Android SDK API Level 34 インストール
$ cd ~/Android
$ sdkmanager "platform-tools" "platforms;android-34" "build-tools;34.0.0" "emulator" "system-images;android-34;google_apis;x86_64"
License android-sdk-license:
---------------------------------------
Terms and Conditions
This is the Android Software Development Kit License Agreement
...省略
---------------------------------------
Accept? (y/N): y
[=======================================] 100%
Android Emulatorインストール・設定
- 必要パッケージを事前インストール
$ sudo apt install -y qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virt-manager libncurses5 libstdc++6 libpulse0 libgl1-mesa-glx libgl1-mesa-dri libxkbfile1 libqt5widgets5 libqt5gui5 libqt5core5a libqt5dbus5 libxkbcommon-x11-0
- kvmにカレントユーザを追加
$ getent group kvm
kvm:x:109:username
$ sudo gpasswd -a $USER kvm
$ newgrp kvm
$ ls -la /dev/kvm
crw-rw---- 1 root kvm 10, 232 7月 27 07:27 /dev/kvm
- bash設定ファイルにemulatorのPATHを追加
export ANDROID_EMULATOR_HOME=$HOME/Android/emulator
export PATH=$PATH:$ANDROID_EMULATOR_HOME
source ~/.bash_profile を実行、またはターミナルを再起動して設定を読みこむ
‘myEmulator’という名前でemulator 作成
avdmanager create avd -n myEmulator -k "system-images;android-34;google_apis;x86_64"
- emulator 実行
emulator -avd myEmulator -netdelay none -netspeed full
- Emulatorが起動すればOK

VSCode .NET MAUI 拡張機能インストール
VSCodeを起動
拡張機能タブで ”.NET MAUI” を検索、または ”.NET MAUI - Visual Studio Marketplace” から拡張機能をインストール
settings.json に次を追加
{
"maui.configuration.androidSdkPreferredPath": "/home/USERNAME/Android",
"maui.configuration.javaSdkPreferredPath": "/usr/bin/java"
}
- workload インストール
$ dotnet workload install maui-android
.NET MAUIプロジェクト作成
デバッグ実行する
コマンドパレット(Ctrl+Shift+P)を開き ”.NET New Project” を入力し実行
表示されたパッケージから、”.NET MAUI アプリ” を選択
プロジェクトを作成するディレクトリを選択
プロジェクト名を入力(今回はMauiAppSample)
“プロジェクトを作成します” を選択
restore実行後に今回準備していないiOSについてエラーが出る
Determining projects to restore...
/home/USERNAME/.dotnet/sdk/8.0.303/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.ImportWorkloads.targets(38,5): error NETSDK1178: The project depends on the following workload packs that do not exist in any of the workloads available in this installation: Microsoft.ios.Sdk.net8 [/home/USERNAME/repos/MauiAppSample/MauiAppSample/MauiAppSample.csproj::TargetFramework=net8.0-ios]
/home/USERNAME/.dotnet/sdk/8.0.303/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.ImportWorkloads.targets(38,5): error NETSDK1178: You may need to build the project on another operating system or architecture, or update the .NET SDK. [/home/USERNAME/repos/MauiAppSample/MauiAppSample/MauiAppSample.csproj::TargetFramework=net8.0-ios]
- プロジェクトファイル(MauiAppSample.csproj)を開き、Android以外を削除する
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>net8.0-android;net8.0-ios;net8.0-maccatalyst</TargetFrameworks>
<TargetFrameworks>net8.0-android;</TargetFrameworks>
<!-- 省略 -->
</PropertyGroup>
</Project>
コマンドパレットから ”.NET MAUI: Android デバイスの選択”を入力・選択
先ほど作成したEmulator(myEmulator)を選択
(起動していない場合)Android Emulatorを起動
emulator -avd myEmulator -netdelay none -netspeed full
- F5 でデバッグ実行

まとめ
本記事の目的は無事に達成できた。また、Linux環境のVSCodeで .NET MAUIアプリの開発(Androidのみだけど)は可能っぽいことも分かった。
個人的にメインPCをWindowsからUbuntuへ移行することを考えており、今回はそれを見据えての検証だった。
Emulatorは強引にWSLで動かしたが、Ubuntuネイティブではより快適に動作するのかもしれない。
しかし想定以上の作業量、エラー対処が発生した。
結果として、Visual Studio Communityがいかに楽かを痛感した。
Windowsを使い続けるか、モバイルアプリ開発をAndroid Studioに移行するか、VSCode + .NET MAUIがこなれてくるのを待つか、迷うところ。
とりあえずおつかれさまでした。