Partager via


Mise à jour des applications iOS existantes

Suivez ces étapes pour mettre à jour une application Xamarin.iOS existante pour utiliser l’API unifiée.

La mise à jour d’une application existante pour utiliser l’API unifiée nécessite des modifications apportées au fichier projet lui-même, ainsi qu’aux espaces de noms et API utilisés dans le code de l’application.

La route à 64 bits

Les nouvelles API unifiées sont nécessaires pour prendre en charge les architectures d’appareils 64 bits à partir d’une application mobile Xamarin.iOS. Depuis le 1er février 2015, Apple exige que toutes les nouvelles soumissions d’applications à l’App Store iTunes prennent en charge les architectures 64 bits.

Xamarin fournit des outils pour Visual Studio pour Mac et Visual Studio afin d’automatiser le processus de migration de l’API classique vers l’API unifiée, ou vous pouvez convertir manuellement les fichiers projet. Bien que l’utilisation de l’outil automatique soit fortement suggérée, cet article aborde les deux méthodes.

Avant de commencer...

Avant de mettre à jour votre code existant vers l’API unifiée, il est vivement recommandé d’éliminer tous les avertissements de compilation. De nombreux avertissements dans l’API Classique deviennent des erreurs une fois que vous migrez vers Unified. Les corriger avant de commencer est plus facile, car les messages du compilateur de l’API classique fournissent souvent des conseils sur la mise à jour.

Mise à jour automatisée

Une fois les avertissements corrigés, sélectionnez un projet iOS existant dans Visual Studio pour Mac ou Visual Studio, puis choisissez Migrer vers l’API unifiée Xamarin.iOS dans le menu Projet. Par exemple :

Choose Migrate to Xamarin.iOS Unified API from the Project menu

Vous devrez accepter cet avertissement avant l’exécution de la migration automatisée (vous devez évidemment vous assurer que vous disposez de sauvegardes/contrôle de code source avant de vous lancer dans cette aventure) :

Agree to this warning before the automated migration will run

L’outil automatise essentiellement toutes les étapes décrites dans la section Mise à jour manuellement présentée ci-dessous et est la méthode suggérée de conversion d’un projet Xamarin.iOS existant en API unifiée.

Étapes de mise à jour manuelle

Là encore, une fois les avertissements corrigés, procédez comme suit pour mettre à jour manuellement les applications Xamarin.iOS pour utiliser la nouvelle API unifiée :

1. Mettre à jour le type de projet et la cible de build

Modifiez la saveur du projet dans vos fichiers csproj de 6BC8ED88-2882-458C-8E55-DFD12B67127B vers FEACFBD2-3405-455C-9665-78FE426C6842. Modifiez le fichier csproj dans un éditeur de texte, en remplaçant le premier élément de l’élément <ProjectTypeGuids> comme indiqué :

Edit the csproj file in a text editor, replacing the first item in the ProjectTypeGuids element as shown

Modifiez l’élément Import qui contient Xamarin.MonoTouch.CSharp.targets Xamarin.iOS.CSharp.targets comme indiqué :

Change the Import element that contains Xamarin.MonoTouch.CSharp.targets to Xamarin.iOS.CSharp.targets as shown

2. Mettre à jour les références de projet

Développez le nœud Références du projet d’application iOS. Il affiche initialement une référence *broken- monotouch similaire à cette capture d’écran (car nous venons de modifier le type de projet) :

It will initially show a broken- monotouch reference similar to this screenshot because the project type changed

Cliquez avec le bouton droit sur le projet d’application iOS pour modifier les références, puis cliquez sur la référence monotouche et supprimez-la à l’aide du bouton rouge « X ».

Right-click on the iOS application project to Edit References, then click on the monotouch reference and delete it using the red X button

Faites maintenant défiler jusqu’à la fin de la liste des références et cochez l’assembly Xamarin.iOS .

Now scroll to the end of the references list and tick the Xamarin.iOS assembly

Appuyez sur OK pour enregistrer les modifications apportées aux références de projet.

3. Supprimer MonoTouch des espaces de noms

Supprimez le préfixe MonoTouch des espaces de noms dans using les instructions ou où un nom de classe a été qualifié complet (par exemple, MonoTouch.UIKit devient juste UIKit).

4. Remappage de types

Les types natifs ont été introduits, qui remplacent certains types précédemment utilisés, tels que les instances de System.Drawing.RectangleF CoreGraphics.CGRect (par exemple). Vous trouverez la liste complète des types dans la page des types natifs .

5. Correction des remplacements de méthode

Certaines UIKit méthodes ont eu leur signature modifiée pour utiliser les nouveaux types natifs (par nintexemple). Si les sous-classes personnalisées remplacent ces méthodes, les signatures ne correspondent plus et entraînent des erreurs. Corrigez ces remplacements de méthode en modifiant la sous-classe pour qu’elle corresponde à la nouvelle signature à l’aide de types natifs.

Les exemples incluent la modification public override int NumberOfSections (UITableView tableView) de retour et la modification du type de retour nint et des types de paramètres dans public override int RowsInSection (UITableView tableView, int section) nint.

À propos de l’installation

Les considérations suivantes doivent être prises en compte lors de la conversion d’un projet Xamarin.iOS existant de l’API classique vers la nouvelle API unifiée si cette application s’appuie sur un ou plusieurs composants ou package NuGet.

Composants

Tout composant que vous avez inclus dans votre application doit également être mis à jour vers l’API unifiée ou vous obtiendrez un conflit lorsque vous essayez de compiler. Pour tout composant inclus, remplacez la version actuelle par une nouvelle version du magasin de composants Xamarin qui prend en charge l’API unifiée et effectuez une build propre. Tout composant qui n’a pas encore été converti par l’auteur affiche un avertissement 32 bits uniquement dans le magasin de composants.

Prise en charge par NuGet

Bien que nous avons apporté des modifications à NuGet pour travailler avec la prise en charge de l’API unifiée, il n’y a pas eu de nouvelle version de NuGet. Nous évaluons donc comment obtenir NuGet pour reconnaître les nouvelles API.

Jusqu’à ce moment-là, tout comme les composants, vous devez basculer tout package NuGet inclus dans votre projet vers une version qui prend en charge les API unifiées et effectuer une build propre par la suite.

Important

Si vous avez une erreur sous la forme « Erreur 3 Impossible d’inclure à la fois « monotouch.dll » et « Xamarin.iOS.dll » dans le même projet Xamarin.iOS - « Xamarin.iOS.dll » est référencé explicitement, alors que « monotouch.dll » est référencé par « xxx, Version=0.0.000, Culture=neutral, PublicKeyToken=null » après avoir converti votre application en API unifiées, il est généralement dû à un composant ou à un package NuGet dans le projet qui n’a pas été mis à jour vers l’API unifiée. Vous devez supprimer le composant existant/NuGet, effectuer une mise à jour vers une version qui prend en charge les API unifiées et effectuer une build propre.

Activation des builds 64 bits des applications Xamarin.iOS

Pour une application mobile Xamarin.iOS convertie en API unifiée, le développeur doit toujours activer la création de l’application pour les machines 64 bits à partir des options de l’application. Pour obtenir des instructions détaillées sur l’activation des builds 64 bits des applications Xamarin.iOS du document Considérations relatives à la plateforme 32/64 bits, consultez le document sur l’activation des builds 64 bits.

Finissant vers le haut

Que vous choisissiez ou non d’utiliser la méthode automatique ou manuelle pour convertir votre application Xamarin.iOS du classic vers les API unifiées, il existe plusieurs instances qui nécessitent une intervention manuelle supplémentaire. Consultez notre Astuces pour mettre à jour le code vers le document d’API unifiée pour connaître les problèmes connus et contourner les problèmes.