アプリを 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" />
これを行わないと、targetSdkVersion
がminSdkVersion
に設定されます。 また、状況によっては、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 プロジェクトで低いターゲット プラットフォーム バージョンが使用されている場合は、ビルド警告が表示されます。