3
Help us understand the problem. What are the problem?

posted at

パブリックプレビューの .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

maui_01.png

.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

maui_02.png

.NET MAUI App を Mac で動かす

# ビルドします
$ dotnet build -t:Run -f net6.0-maccatalyst

maui_03.png

参考

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
3
Help us understand the problem. What are the problem?