.NET MAUI 環境構築に四苦八苦したときの備忘録

## 環境
- Windows 10 Pro
- Visual Studio 2022(v17.7)
- .NET 7.0.13
- Visual Studio 17.7.6
- SDK 7.0.403

## 参考記事
https://learn.microsoft.com/ja-jp/dotnet/maui/get-started/installation?tabs=vswin

https://learn.microsoft.com/ja-jp/dotnet/maui/get-started/first-app?tabs=vswin&pivots=devices-android

https://learn.microsoft.com/ja-jp/xamarin/android/get-started/installation/android-emulator/device-manager?tabs=windows&pivots=windows

https://learn.microsoft.com/ja-jp/dotnet/core/tools/dotnet-workload-restore

https://learn.microsoft.com/ja-jp/visualstudio/install/update-visual-studio?view=vs-2022

## .NET マルチプラットフォーム アプリ UI 開発ワークロードをインストール
- 適当にプロジェクトを開いて、「ツール>ツールと機能を取得」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711955/91be5b1c-a851-272e-796a-dc53e3156ebb.png)
- .NET マルチプラットフォームアプリのUI開発にチェックを入れて「適用」
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711955/7fae305d-4a5e-d513-eec9-f0b1d38cfb5b.png)

## 新しいプロジェクトの作成
- 新しいプロジェクトの作成をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711955/1677e47c-c504-f192-70bb-33edd3a4b74d.png)

- .NET MAUIアプリを選択して次へ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711955/c57b76a3-c041-e480-e93a-1bfaa19fda8a.png)

- プロジェクト名とソリューション名を任意で設定して次へ
*※フォルダを作成するまでのパスでかな文字を含まないようにする(後ほど設定するAndroidエミュレーター起動時にビルドできないといったことがあったため)*
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711955/a5ed83ed-d241-fb84-2f35-a70d1f670436.png)

- フレームワークの選択(今回は.NET 7.0を使用)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711955/baa0d56c-9086-48b7-9ae5-5f6ce9c68529.png)

## Windowsアプリを起動
- フレームワークを選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711955/841d9f34-28e1-d0fb-bd42-2cb073329a43.png)

- Windowsアプリを起動
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711955/1a9acc4d-fef2-eb90-103c-311fee1cdcd9.png)

- 開発者モードの設定をしていない場合は以下のようなダイアログが表示される
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711955/683d32b7-0197-15fd-7fdc-091662d23f82.png)

- 開発者モードをONに設定する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711955/a16d7f70-f581-0df4-99f2-f2aad7f95f06.png)

- 再度Windowsアプリを起動
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711955/63df2de4-6396-9cc9-6a95-7b1efaffa168.png)

- 起動が確認できればOK
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711955/215bb3b6-fe3d-1446-a27c-7bb38134daab.png)

## Androidプラットフォームの環境構築
- ビルドするプラットフォームとフレームワークを選択(Android)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711955/89fffd9c-d431-feac-6d1b-1dbcd76575d3.png)

- Android Emulatorをクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711955/fe4b40f8-53a3-9a62-f3a0-96abbe3334f9.png)

- 「同意」
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711955/09ef127d-f646-a7f2-c7b5-bdc8745afba9.png)

- 「同意」
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711955/5c833ef9-dd50-3638-21b9-531469c825a3.png)

- 「Yes」
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711955/deade1a7-11f5-71a9-0c9d-10acec3a61ae.png)

- 「create」
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711955/b9d444ed-785b-7819-c619-a133c996a8f7.png)

#### Hyper-vを高速化
- Androidエミュレーターを開始しようとすると以下のように警告が出されるため、Hyper-vの高速化が必要そう。。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711955/51bfa67a-6df3-5a23-c716-4047cdcc2dc3.png)
- 「Windowsの機能の有効化または無効化」を起動
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711955/e5309997-5a8e-5784-90c2-6068867d5df5.png)

- [Hyper-V プラットフォーム] と [Windows ハイパーバイザー プラットフォーム] を有効化
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711955/d17b0d22-13dd-a90d-8cf9-e70559ee6541.png)

- 「ツール>Android>Android SDKマネージャー...」を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711955/e8cf2839-c3ad-06d1-66dd-ebe6b6fc5672.png)

- 以下の条件で選択されていることを確認
  - Android SDK Tools バージョン 26.1.1 以降
  - Android SDK Platform-Tools 27.0.1 以降
  - Android SDK Build Tools 27.0.3 以降
  - Android Emulator 27.2.7 以降。
  ※今回はAPI33を使用するため、「Android SDK Build-Tools 33」にチェックを入れて「変更を適用」
  
  ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711955/dd030803-5e88-f95e-2da4-c093bbbe67c3.png)

- 同意
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711955/a1b04d5c-1186-e53a-c67d-840ae8aff92f.png)

- 作成したAndroidエミュレーターを選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711955/3aeb09a6-547a-9886-ca2a-bea534cfd229.png)

- 起動
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711955/bd483c3e-101a-1bf6-48e3-4e37a86c9c7b.png)

- 起動が確認できればOK
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711955/7aaa7e88-5f9d-f81a-63df-6bd60bcd37b4.png)

## Androidアプリの起動がうまくいかなかった時に試したこと
#### Visual Studioのアップデート
Visual Studioをアップデートが決め手だったように感じる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711955/9f568ea1-2a0e-f608-0980-c24f2f954281.png)

#### SDKの更新があったので更新
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711955/0b34a678-67fb-73b2-e2ed-6743c4e96922.png)

#### 全てのライセンスへ同意
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711955/4c038683-96d5-4387-be17-ea77905ad0c2.png)

#### dotnetワークロードの更新
```
# インストールしているワークロードを確認
dotnet workload list

# note2プロジェクトに必要なワークロードをインストールし、不要なワークロードを削除
dotnet workload restore notes2.csproj

# maui-Androidがないよーと出力されていた時にインストール
dotnet workload install maui-android
```

#### Androidを起動する時にパスに全角があると起動しなかったため、プロジェクトをCドライブ直下やDドライブ直下に移動することで解消できました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711955/de71f977-d463-4354-e51b-2eb205363a03.png)

#### Visual Studioをアップデート後、「デバッグするには、プロジェクトを配置する必要があります。構成マネージャーで配置を有効にしてください。」といったエラーになった時の対処
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711955/9420a549-164f-ef4c-f9ee-8c58dd76f3ed.png)

- 下記のようなエラーメッセージが出力されている時
  - 結論から言うとリビルドするだけでOK
>エラー DEP0700: アプリの登録に失敗しました。[0x80073CF6] AppxManifest.xml(33,27): エラー 0x80070003: スプラッシュ スクリーン イメージ [SplashScreen.png] が見つからないため、パッケージ chhlvl.designIT7_xzp7k71ajzmr6 をインストールまたは更新できません。パッケージにアプリケーションのスプラッシュ スクリーンとして使用できるイメージが含まれていること、およびパッケージ マニフェストがこのスプラッシュ スクリーン イメージが存在するパッケージ内の正しい場所を指していることを確認します。デザインIT7

- 以下の記事に詳細を記載しておきました

https://qiita.com/inakuuun/items/f40aea40ca132e3d6e9d

#### 起動できない場合や配置エラーなど...
- Androidデバイスマネージャーを一度削除
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711955/12d47776-4c9a-a091-e4c5-f86c1773d61d.png)

- エミュレーターを再作成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2711955/8ce57dd7-42ea-3e45-5bfe-f8dee36f4522.png)

現状、Microsoft公式の手順通りに進めても.NET MAUIの起動時にエラーが起こると考えておいた方が良いと思います。自分の場合は.NET マルチプラットフォームアプリのUI開発ワークロードをすでに入れている状態だったため、様々なエラーと闘う必要がありました。
皆さんの環境構築がうまくいくことを祈っています。