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é enFlyoutPage
. De même, l’énumérationMasterBehavior
a été renomméeFlyoutLayoutBehavior
en .- 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.