Partager via


Comment faire migrer mon application vers Xamarin.Forms la version 5.0 ?

Xamarin.Forms La version 5.0 inclut les modifications cassants suivantes :

  • Expander a été déplacé vers le kit de ressources de la communauté Xamarin. Pour plus d’informations, consultez Fonctionnalités déplacées à partir de Xamarin.Forms.
  • MediaElement a été déplacé vers le kit de ressources de la communauté Xamarin. Pour plus d’informations, consultez Fonctionnalités déplacées à partir de Xamarin.Forms.
  • DataPages et les projets associés ont été supprimés de Xamarin.Forms.
  • MasterDetailPage a été renommé en FlyoutPage. De même, l’énumération MasterBehavior a été renommée FlyoutLayoutBehavioren .
  • Les références à UIWebView ont été supprimées de Xamarin.Forms sur iOS.
  • La prise en charge de Visual Studio 2017 a été supprimée.
  • XFCorePostProcessor.Tasks a été supprimé. Ce projet a injecté l’il pour maintenir Xamarin.Forms la compatibilité 2.5.

En outre, les projets Android et UWP créés avec Xamarin.Forms la version 5.0 nécessiteront une mise à jour.

Important

Lors de la mise à jour d’une application vers Xamarin.Forms la version 5.0, veillez à mettre à jour chaque projet qui fait référence au Xamarin.Forms package NuGet vers une version identique.

Android

Les projets Android créés avec Xamarin.Forms la version 5.0 nécessitent que vous ayez installé la plateforme AndroidX (Android 10.0) dans votre environnement de développement. Cela peut être effectué avec le gestionnaire du KIT de développement logiciel (SDK) Android. Pour plus d’informations sur AndroidX, consultez Migration AndroidX dans Xamarin.Forms.

Les projets Android nécessitent ensuite plusieurs mises à jour pour générer correctement.

Minimum TargetFrameworkVersion

Xamarin.Forms La version 5.0 nécessite une version minimale du framework cible 10.0 (AndroidX) pour les projets Android. La version du framework cible peut être définie dans Visual Studio ou dans le fichier .csproj Android :

<TargetFrameworkVersion>v10.0</TargetFrameworkVersion>

Une erreur de build est générée si cette condition minimale n’est pas remplie :

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.

Minimum TargetSDKVersion

AndroidX nécessite que votre manifeste Android définisse le sur targetSdkVersion 29+ :

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

Si vous ne le faites pas, le targetSdkVersion doit être défini sur .minSdkVersion En outre, dans certaines circonstances, un Android.Views.InflateException sera produit si le targetSdkVersion n’est pas correctement défini :

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

Notes

Dans Visual Studio 2019, le manifeste Android est automatiquement mis à jour pour spécifier un targetSdkVersion de l’API 29 lorsque la version du framework cible est définie sur v10.0.

Migration automatique vers AndroidX

Si votre projet Android fait référence à des bibliothèques de prise en charge Android, sous forme de dépendances directes ou de dépendances transitives, ces dépendances et liaisons de bibliothèque de prise en charge sont automatiquement échangées avec les dépendances AndroidX pendant le processus de génération. Pour plus d’informations sur la migration automatique AndroidX, consultez Migration automatique dans Xamarin.Forms.

Migration manuelle vers AndroidX

Si votre projet Android n’a pas de dépendances directes ou transitives sur les bibliothèques de prise en charge Android, mais tente toujours d’utiliser des types de bibliothèques de support via du code, vous devez migrer manuellement votre application vers AndroidX. Pour ce faire, utilisez des types AndroidX et supprimez tous les fichiers AXML que vous n’avez pas personnalisés.

Conseil

La migration manuelle vers AndroidX aboutira au processus de génération le plus rapide pour votre application.

Utiliser les types AndroidX

AndroidX remplace les bibliothèques de prise en charge Android. Par conséquent, toutes les références aux types de bibliothèques de prise en charge Android doivent être remplacées par des références aux types AndroidX.

Pour ce faire, vous pouvez mettre à jour vos using instructions pour utiliser AndroidX des espaces de noms plutôt que Android.Support des espaces de noms. Le tableau suivant répertorie certaines des modifications courantes apportées à l’espace de noms lors du déplacement des bibliothèques de prise en charge Android vers AndroidX :

Espace de noms de bibliothèque de prise en charge Android Espace de noms 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

Pour obtenir la liste complète des mappages de classes des bibliothèques de support vers AndroidX, consultez Mappages de classes AndroidX sur github.com. Pour obtenir la liste complète des mappages d’assemblys des bibliothèques de support vers AndroidX, consultez Assemblys AndroidX sur github.com

Supprimer des fichiers AXML

Vous devez supprimer tous les fichiers AXML de votre projet Android, à condition qu’il n’utilise pas de fichiers AXML personnalisés. Après la suppression, les lignes suivantes doivent être supprimées de votre MainActivity classe :

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

Important

Les projets Android avec des fichiers AXML personnalisés doivent être mis à jour afin que ces fichiers utilisent des types AndroidX.

UWP

Xamarin.Forms 5.0 recommande une version de plateforme cible de >= 10.0.18362.0 pour les projets UWP. La version de la plateforme cible peut être définie dans Visual Studio ou dans le fichier .csproj UWP :

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

Un avertissement de build est généré si votre projet UWP utilise une version inférieure de la plateforme cible.