Share via


アプリを Xamarin.Forms 5.0 に移行するには、どうすればよいですか。

Xamarin.Forms 5.0 には、次の重大な変更が含まれています。

  • Expander は Xamarin Community Toolkit に移行しました。 詳細については、Xamarin.Forms から移行した機能に関するページを参照してください。
  • MediaElement は Xamarin Community Toolkit に移行しました。 詳細については、Xamarin.Forms から移行した機能に関するページを参照してください。
  • DataPages と関連するプロジェクトは Xamarin.Forms から削除されました。
  • MasterDetailPage の名前が FlyoutPage に変更されました。 同様に、MasterBehavior 列挙体の名前は FlyoutLayoutBehavior に変更されました。
  • UIWebView への参照は、iOS で Xamarin.Forms から削除されました。
  • Visual Studio 2017 のサポートは削除されました。
  • XFCorePostProcessor.Tasks が削除されました。 このプロジェクトでは、Xamarin.Forms 2.5 の互換性を維持するために IL が挿入されました。

さらに、Xamarin.Forms 5.0 でビルドされた Android プロジェクトと UWP プロジェクトでは、更新が必要になります。

重要

アプリケーションを Xamarin.Forms 5.0 に更新する場合は、Xamarin.Forms NuGet パッケージを参照する各プロジェクトを同じバージョンに更新してください。

Android

Xamarin.Forms 5.0 でビルドされた Android プロジェクトでは、AndroidX (Android 10.0) プラットフォームを開発環境にインストールしている必要があります。 これは、Android SDK マネージャーで実行できます。 AndroidX の詳細については、「Xamarin.Forms での AndroidX の移行」を参照してください。

Android プロジェクトでは、正しくビルドするために何度か更新が必要になります。

最小の TargetFrameworkVersion

Xamarin.Forms 5.0 では、Android プロジェクト用に 10.0 (AndroidX) の最小ターゲット フレームワーク バージョンが必要です。 ターゲット フレームワークのバージョンは、Visual Studio または Android .csproj ファイルで設定できます。

<TargetFrameworkVersion>v10.0</TargetFrameworkVersion>

この最小要件が満たされていない場合、ビルド エラーが発生します。

error XF005: The $(TargetFrameworkVersion) for MyProject.Android (v9.0) is less than the minimum required $(TargetFrameworkVersion) for Xamarin.Forms (10.0). You need to increase the $(TargetFrameworkVersion) for MyProject.Android.

最小の TargetSDKVersion

AndroidX では、Android マニフェストで targetSdkVersion 29 以上に設定する必要があります。

<uses-sdk android:minSdkVersion="21" android:targetSdkVersion="29" />

これを行わないと、targetSdkVersionminSdkVersion に設定されます。 また、状況によっては、targetSdkVersion が正しく設定されていないと Android.Views.InflateException が発生します。

Android.View.InflateException has been thrown.

Binary XML file line #1 in com.companyname.myproject:layout/toolbar: Binary XML file line #1 in com.companyname.myproject:/layout/toolbar: Error inflating class android.support.v7.widget.Toolbar

Note

Visual Studio 2019 では、ターゲット フレームワークのバージョンが v10.0 に設定されている場合、Android マニフェストが自動的に更新され、API 29 の targetSdkVersion に指定されます。

AndroidX への自動移行

Android プロジェクトが Android サポート ライブラリを直接の依存関係または推移的な依存関係として参照している場合、これらのサポート ライブラリの依存関係とバインドは、ビルド プロセス中に AndroidX の依存関係と自動的にスワップされます。 AndroidX の自動移行に関する詳細については、次の「Xamarin.Forms での自動移行」を参照してください。

AndroidX への手動移行

Android プロジェクトに Android サポート ライブラリへの直接的または推移的な依存関係がないにもかかわらず、コードを通じてサポート ライブラリの種類を使用しようとする場合は、アプリを AndroidX に手動で移行する必要があります。 これを実現するには、AndroidX 型を使用し、カスタマイズしていない AXML ファイルを削除します。

ヒント

AndroidX への手動移行により、アプリのビルド プロセスが最速になります。

AndroidX 型を使用する

AndroidX は Android サポート ライブラリを置き換えるので、Android サポート ライブラリ型への参照は AndroidX 型への参照に置き換える必要があります。

これは、using ステートメントを更新して、Android.Support 名前空間ではなく AndroidX 名前空間を使用することで実現できます。 次の表は、Android サポート ライブラリから AndroidX に移行する場合の一般的な名前空間の変更の一部を示しています。

Android サポート ライブラリの名前空間 AndroidX 名前空間
Android.Support.V4.App AndroidX.Core.App
Android.Support.V4.Content AndroidX.Core.Content
Android.Support.V4.App AndroidX.Fragment.App
Android.Support.V7.App AndroidX.AppCompat.App
Android.Support.V7.Widget AndroidX.AppCompat.Widget

サポート ライブラリから AndroidX へのクラス マッピングの完全な一覧については、github.com の AndroidX クラス マッピングを参照してください。 サポート ライブラリから AndroidX へのアセンブリ マッピングの完全な一覧については、github.com の AndroidX アセンブリを参照してください。

AXML ファイルを削除する

カスタマイズされた AXML ファイルを使用していない場合は、Android プロジェクトから AXML ファイルを削除する必要があります。 削除後、MainActivity クラスから次の行を削除する必要があります。

TabLayoutResource = Resource.Layout.Tabbar;
ToolbarResource = Resource.Layout.Toolbar;

重要

カスタマイズされた AXML ファイルを含む Android プロジェクトは、これらのファイルで AndroidX 型を使用するように更新する必要があります。

UWP

Xamarin.Forms 5.0 では、UWP プロジェクトのターゲット プラットフォーム バージョン >= 10.0.18362.0 をお勧めします。 ターゲット プラットフォームのバージョンは、Visual Studio または UWP .csproj ファイルで設定できます。

<TargetPlatformVersion Condition=" '$(TargetPlatformVersion)' == '' ">10.0.18362.0</TargetPlatformVersion>

UWP プロジェクトで低いターゲット プラットフォーム バージョンが使用されている場合は、ビルド警告が表示されます。