😀
パブリックプレビューの .NET MAUI を M1 Mac で試してみた
背景と目的
現段階で、M1 Mac 環境での .NET6 MAUI の情報があまりなく、トライアンドエラーで試してみました。最低限必要なツールを揃えて MAUI アプリが動く事が確認できました。
前提条件
コマンドの実施環境は、Macbook Air (M1, 2020) です。
$ sw_vers
ProductName: macOS
ProductVersion: 12.0.1
BuildVersion: 21A559
M1 Mac 環境での .NET6 MAUI に最低限必要なツールを入れる
- .NET 6.0.100 SDK macOS Arm64 Installer
- Android Studio Mac (64-bit, ARM) android-studio-2020.3.1.25-mac_arm.zip
- Xcode 13.1
$ xcodebuild -version
Xcode 13.1
Build version 13A1030d
なお、Visual Studio for Mac はインストールしていません。
maui-check で MAUI 環境が揃ったか確認する
$ dotnet tool install -g redth.net.maui.check
$ export PATH="$PATH:~/.dotnet/tools"
$ maui-check
Attempt to fix? [y/n] (y):
が表示されたら y
で追加のSDKをダウンロードしてインストールしてくれます。
最終的には以下のような状態に持っていきました。
_ _ _____ _____ __ __ _ _ _ ___
| \ | | | ____| |_ _| | \/ | / \ | | | | |_ _|
| \| | | _| | | | |\/| | / _ \ | | | | | |
_ | |\ | | |___ | | | | | | / ___ \ | |_| | | |
(_) |_| \_| |_____| |_| |_| |_| /_/ \_\ \___/ |___|
🚑 .NET MAUI Check v0.10.0.0 💉
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
This tool will attempt to evaluate your .NET MAUI development environment.
If problems are detected, this tool may offer the option to try and fix them for you, or suggest a way to fix them yourself.
Thanks for choosing .NET MAUI!
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
⏳ Synchronizing configuration... ok
⏳ Scheduling appointments... ok
🔎 OpenJDK 11.0 Checkup...
✔ 11.0.12 (/Library/Java/JavaVirtualMachines/microsoft-11.jdk/Contents/Home/bin/..)
🔎 Visual Studio 8.10.0 Checkup...
🔎 Android SDK Checkup...
✔ emulator (30.9.4)
✔ build-tools;31.0.0 (31.0.0)
✔ platforms;android-31 (1)
✔ system-images;android-31;google_apis;x86_64 (8)
✔ platform-tools (31.0.3)
✔ cmdline-tools;5.0 (5.0)
🔎 Android Emulator Checkup...
✔ Emulator: Pixel_3a_API_31_arm64-v8a found.
🔎 XCode 13.1 Checkup...
✔ Xcode.app (13.1)
🔎 .NET SDK Checkup...
✔ 6.0.100 - /usr/local/share/dotnet/sdk/6.0.100
🔎 .NET SDK - Workload Deduplication Checkup...
🔎 .NET SDK - EnableWorkloadResolver.sentinel Checkup...
🔎 .NET SDK - Workloads (6.0.100) Checkup...
✔ android-aot (Microsoft.NET.Sdk.Android.Manifest-6.0.100 : 31.0.101-preview.10.59) installed.
✔ ios (Microsoft.NET.Sdk.iOS.Manifest-6.0.100 : 15.0.101-preview.10.251) installed.
✔ maccatalyst (Microsoft.NET.Sdk.MacCatalyst.Manifest-6.0.100 : 15.0.101-preview.10.251) installed.
✔ tvos (Microsoft.NET.Sdk.tvOS.Manifest-6.0.100 : 15.0.101-preview.10.251) installed.
✔ macos (Microsoft.NET.Sdk.macOS.Manifest-6.0.100 : 12.0.101-preview.10.251) installed.
✔ maui (Microsoft.NET.Sdk.Maui.Manifest-6.0.100 : 6.0.101-preview.10.2068) installed.
✔ wasm-tools (microsoft.net.workload.mono.toolchain.manifest-6.0.100 : 6.0.0) installed.
✔ microsoft-net-sdk-emscripten (microsoft.net.workload.emscripten.manifest-6.0.100 : 6.0.0) installed.
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
✔ Congratulations, everything looks great!
Press enter to exit...
コマンドラインで .NET MAUI App を作る
$ dotnet new maui -n HelloMaui
$ cd HelloMaui
$ dotnet restore
.NET MAUI App を Android で動かす
# エミュレーター名を取得します
$ ~/Library/Android/sdk/emulator/emulator -list-avds
Pixel_3a_API_31_arm64-v8a
# エミュレーターをビルド前に起動しておきます
$ ~/Library/Android/sdk/emulator/emulator \
-avd Pixel_3a_API_31_arm64-v8a \
-netdelay none \
-netspeed full &
# ビルドします
$ dotnet build -t:Run -f net6.0-android
.NET MAUI App を iOS で動かす
# とりあえずエミュレーターは何でも良いのでビルドしてみます
$ dotnet build -t:Run -f net6.0-ios
# 自分の Xcode 環境にある "13 Pro Max" の UDID を探します
$ /Applications/Xcode.app/Contents/Developer/usr/bin/simctl list | grep "13 Pro Max"
iPhone 13 Pro Max (com.apple.CoreSimulator.SimDeviceType.iPhone-13-Pro-Max)
iPhone 13 Pro Max (81A6E8F2-839E-44CC-93D3-3BC3293DEE0A) (Shutdown)
Phone: iPhone 13 Pro Max (81A6E8F2-839E-44CC-93D3-3BC3293DEE0A) (Shutdown)
# UDID を指定してビルドします
$ dotnet build -t:Run -f net6.0-ios -p:_DeviceName=:v2:udid=81A6E8F2-839E-44CC-93D3-3BC3293DEE0A
.NET MAUI App を Mac で動かす
# ビルドします
$ dotnet build -t:Run -f net6.0-maccatalyst
参考
Discussion