個人的なメモ

Tomohiro Suzuki @hiro128_777 のブログです。Xamarin に関する事を中心に書いています。 Microsoft MVP for Development Technologies 2017- 本ブログと所属組織の公式見解は関係ございません。

.NET MAUI Update の整理(随時更新中)

.NET MAUI の Preview 9 がリリースされました。Preview 1 から Preview 9 まで段階的に情報や新機能がリリースされており、情報が分散して探しにくいので重要な更新情報を整理してみました。
  
公式情報も更新されているため、内容は随時更新中です。
 
.NET 6 の新機能の情報は以下をご覧ください。
hiro128.hatenablog.jp
 
 

  

.NET MAUI の GA の時期の遅延ついて(.NET MAUI Preview 8)

  • .NET MAUI の RC は2022年第1四半期に、GA は 2022年第2四半期の初めを目標とすることに延期された。
  • Xamarin は引き続き強化され、本番用のモバイルアプリの構築には Xamarin が推奨となる。
  • .NET MAUIで提供される予定のすべての機能は、.NET 6 がGAされる2021年11月にプレビューとして利用可能になる。
  • その後は、引き続き品質向上やユーザーからのフィードバックへの対応に取り組む。
  • .NET MAUIのプレビューは毎月リリースし続ける。

公式情報:Update on .NET Multi-platform App UI (.NET MAUI) - .NET Blog
 

Visual Studio 2022 との統合(.NET MAUI Preview 8 / Visual Studio 2022 Preview 4)

  • Visual Studio 2022 Preview 4 以降のインストール時に、「.NET によるモバイル開発」ワークロード内の.NET MAUI(プレビュー)をチェックできるようになり、.NET 6とオプションのワークロードの依存関係が導入されるようになった。

公式情報:Visual Studio 2022 Preview 4 Productivity
 

MAUI アプリの起動方法の更新(.NET MAUI Preview 8)

  • MAUI アプリの起動方法が更新され、各プラットフォームでは、MauiProgram.CreateMauiAppを呼び出すようになった。

公式情報:.NET MAUI SDK Updates
 

Android のアップデート(.NET MAUI Preview 8)

  • Android 向けにビルドされた .NET 6 アプリケーションでは、Android 12(API 31)がデフォルトになる。
  • Android 12 を使用するには、JDK 11 を手動でインストールする必要があるが、Visual StudioAndroid ツールが JDK 11 をサポートするまでの間、Android デザイナー、SDK マネージャー、デバイスマネージャーに好ましくない影響を与える可能性がある。
  • Visual StudioAndroidツール が JDK 11 を使用するように更新されたら、JDK 11 を .NET MAUI にデフォルトでバンドルする。
  • Androidプロジェクトでは、デフォルトで MaterialTheme が使用されるようになった。
  • これにより、Android でランタイムエラーが発生する場合は、Platforms/Android/MainActivity.cs で @style/Maui.SplashTheme が指定されていることを確認。
  • 更新された .NET MAUIテンプレートが参考になる。

公式情報:Android Updates
 

高速な Android のスタートアップ(.NET MAUI Preview 9)

  • Preview 9には、.NET MAUIのスタートアップトレースプロファイルが同梱されており、コマンドラインからビルドする際に使用することができる。
  • スタートアップトレースを活用して起動時の実行経路を追跡することで、アプリケーションの起動時に実行される部分のみを AOT 化し、スピードとサイズのバランスを取ることができる。

公式情報:Quick Android Startup
  

コントロールの更新(.NET MAUI Preview 9)

 

新しいレイアウト(.NET MAUI Preview 7)

  • 新しいレイアウトはデフォルトで有効になっている。
  • 新しいレイアウトは 7 年間の Xamarin.Forms のレイアウトから得た知見を採用した新しい LayoutManager アプローチに基づいて、一貫性、パフォーマンス、メンテナンス性が最適化されている。
  • 従来の Xamarin.Forms のレイアウトは、Xamarin.Formsからの移行プロジェクトとの互換性のために Microsoft.Maui.Controls.Compatibility 名前空間にのみ存在するようになった。

公式情報:New Layouts
 

新しいボーダーコントロール(.NET MAUI Preview 9)

  • 新しい Microsoft.Maui.Graphics ライブラリは、ネイティブのグラフィックスエンジンに基づいた一貫した UI 描画 API を提供する。
  • .NET MAUI のほとんどのレイアウトやコントロールに、ボーダー、コーナーレンダリング、美しいシャドウを簡単に追加できる。
  • 新しいボーダーコントロールは、任意のレイアウトやコントロールをラップして、ボーダーや各コーナーの独立した制御を追加することができる。

公式情報:Borders, Corners, and Shadows – Oh my!
 

アクセシビリティの変更と改善(.NET MAUI Preview 7)

TabIndex および IsTabStop の削除(.NET MAUI Preview 7)

  • TabIndex と IsTabStopプロパティは、開発者がスクリーンリーダーで読まれるUI要素の順序を制御するために Xamarin.Forms で導入されたが、実際には混乱を招きニーズを満たしていなかった。.
  • .NET MAUI では、インターフェイスの構造をプログラムで操作する方法を探すのではなく、読まれたいようにUIを順序付ける、巧みな設計アプローチを推奨している。
  • .NET MAUI で順番をコントロールしなければならない場合には、コミュニティツールキットの SemanticOrderView を推奨する。

公式情報:TabIndex and IsTabStop Removed
 

SetSemanticFocus とアナウンス(.NET MAUI Preview 7)

  • 新しい SemanticExtensions クラスの一部として、スクリーンリーダーのフォーカスを特定の要素に移動させることができるように、新しい SetSemanticFocus メソッドが追加された。

公式情報:SetSemanticFocus and Announce
 

フォントスケーリング(.NET MAUI Preview 7)

  • すべてのプラットフォームのすべてのコントロールで、フォント・スケーリングがデフォルトで有効になった。
  • これにより、OS 上でテキストスケーリングの設定を調整すると、その設定がアプリケーションの UI に反映され、デフォルトでよりアクセシブルなアプリケーションが実現する。

公式情報:Font Scaling
 

その他の注目すべき変更と追加

.NET MAUI Preview 8

公式情報:Other Changes

  • MinHeightRequest, MaxHeightRequest, MinWidthRequest, MaxWidthRequestに "Request "という接尾辞がなくなり、レイアウトシステムがそれらを真の値として扱うようになりなった。
  • 任意のコントロールマッパーにビヘイビアを追加する方法を簡素化- #1859
  • シェルテーマのスタイリングの様々な改善
  • Android #2027iOS #2029 用の RefreshView を追加
  • AbsoluteLayout を追加 #2136
  • Right-to-Left (RTL) FlowDirectionの追加 #948
  • Button.Icon ImageSourceを追加 #2079

.NET MAUI Preview 7

公式情報:Additional Highlights

  • Xamarin.Forms からアップグレードするプロジェクトをサポートする Effects のサポートの追加 #1574
  • AppThemeBinding の改良による、ダークテーマとライトテーマのモードのサポート #1657
  • ScrollView ハンドラ #1669
  • Android シェルのコアへの移植 #979
  • 複雑なオブジェクトを渡すシェルのナビゲーション #204
  • XAML ホットリロードのためのビジュアルツリーヘルパーの追加 #1845
  • System.ComponentModel.TypeConverterへの切り替え #1725
  • ウィンドウ ライフサイクル イベント #1754
  • ページナビゲーションイベント #1812
  • CSS プレフィックスを -maui に更新 #1877

 
 
以下、随時更新中です。