Puis-je utiliser une version antérieure de Xcode ou de Xamarin.iOS ?

La documentation Xamarin suppose l’utilisation des derniers Xamarin.iOS et Xcode, ce qui est recommandé. Toutefois, certains clients préféreraient utiliser les anciens Xamarin.iOS et/ou Xcode, et aimeraient obtenir des détails sur les conséquences.

Les notes de publication contiennent l’avertissement suivant :

Avertissement

Utilisation d’une version Xcode antérieure

L’utilisation d’une version Xcode plus ancienne (que celle mentionnée dans la configuration requise ci-dessus) est souvent possible, mais certaines fonctionnalités peuvent ne pas être disponibles. Certaines limitations peuvent également nécessiter des solutions de contournement, par exemple :

  • Le statique registrar nécessite des fichiers d’en-têtes Xcode pour générer des applications, ce qui entraîne MT0091 des erreurs ou MT4109 si des API sont manquantes. Dans la plupart des cas, l’activation de l’éditeur de liens managé est utile (en supprimant l’API).
  • Les builds de bitcode (pour tvOS et watchOS) peuvent échouer la soumission à l’App Store, sauf si une chaîne d’outils Xcode 9.0+ est utilisée.

Informations supplémentaires

Microsoft recommande vivement d’utiliser la dernière version de Xcode et la version la plus récente de Xamarin.iOS lors du développement et de la soumission d’applications. Apple nécessite l’utilisation du code Xcode le plus récent lors de l’envoi d’applications.

Notez que l’utilisation du dernier Xcode n’empêche pas votre application de cibler les anciennes versions d’iOS. Les versions iOS que vous prenez en charge sont basées sur votre entrée Info.plist et les API utilisées par votre application.

Il est possible d’installer plusieurs versions de Xcode côte à côte, avec différents noms tels que Xcode101.app et Xcode102.app. Si vous utilisez plusieurs versions, veillez à définir le Xcode actif dans Visual Studio pour Mac Paramètres et avec l’outil xcode-selecten ligne de commande.

Toutefois, de rares circonstances peuvent nécessiter l’utilisation de composants plus anciens. Cette documentation décrit les défis généraux que vous pouvez rencontrer lors de l’utilisation de versions antérieures à la dernière.

Chaque version d’Apple est unique cependant, et vous pouvez rencontrer d’autres pièges non documentés ici.

Ces défis étant parfois non négligeables à résoudre, tenez-vous dans la mesure du possible à la configuration prise en charge de la dernière Xcode et de la dernière version de Xamarin.iOS.

Utilisation d’un ancien Xamarin.iOS avec un ancien Xcode

Il est possible de ne pas mettre à jour Xamarin.iOS et Xcode, au moins pendant un certain temps. La limite est qu’à un moment donné, Apple aura besoin d’une version minimale de Xcode pour envoyer vos applications. À ce stade, vous devez mettre à jour tous vos composants (macOS, Xcode et Xamarin.iOS) vers les dernières versions (ou la nouvelle version minimale de Xcode requise par Apple et la version correspondante de Xamarin.iOS).

Il est généralement plus facile de mettre à jour progressivement et de suivre les petites modifications. Pour les grands projets où les mises à jour peuvent être plus difficiles à suivre, rester avec un ensemble de travail connu peut être un bon compromis.

Utilisation du nouveau Xamarin.iOS avec l’ancien Xcode

En général, Xamarin.iOS prend en charge les versions antérieures de Xcode chaque fois que cela est raisonnablement possible. Voici quelques défis potentiels :

  • La version plus récente de Xamarin.iOS peut prendre en charge certaines fonctionnalités et API qui ne sont pas présentes dans le Xcode sélectionné.
  • Le statique registrar nécessite des fichiers d’en-têtes Xcode pour générer des applications, ce qui entraîne MT0091 des erreurs ou MT4109 si des API sont manquantes.
    • Dans la plupart des cas, l’activation de l’éditeur de liens managé est utile (en supprimant les liaisons managées pour la nouvelle API) si elle n’est pas utilisée.
  • Les builds de bitcode (pour tvOS et watchOS) peuvent échouer la soumission à l’App Store, sauf si une chaîne d’outils Xcode 9.0+ est utilisée.

Utilisation du nouveau Xcode avec l’ancien Xamarin.iOS

Ce cas d’usage est beaucoup plus difficile, car Xamarin.iOS ne peut pas prédire les modifications requises du nouveau Xcode. Mises à jour de macOS peut également introduire des problèmes, et sans correctifs de compatibilité, de nombreuses parties de Xamarin.iOS peuvent être affectées.

Il existe un certain nombre de domaines potentiels où les choses peuvent se passer mal, notamment :

  • Incompatibilités avec mlaunch:
    • La prise en charge du simulateur peut ne pas fonctionner correctement (ou du tout)
    • La prise en charge des appareils peut ne pas fonctionner correctement (ou du tout)
  • Prise en charge inconnue pour mtouch
    • Aucune prise en charge des nouvelles infrastructures
    • Aucune prise en charge des nouveaux droits
    • Aucune prise en charge des outils nouveaux ou mis à jour
      • Cela peut également affecter la signature de code

Nouvelles règles de soumission d’AppStore

Apple se réserve le droit de mettre à jour les règles de soumission d’AppStore à tout moment. Ces changements de règle ne sont parfois annoncés qu’à l’avance. Certaines de ces modifications nécessitent des modifications d’outils pour prendre en charge, ce qui nécessiterait un composant Xamarin.iOS mis à jour.

En plus des changements de règle, Apple ajoute souvent des validations supplémentaires aux applications soumises ou renforce les validations existantes. Certains d’entre eux nécessitent des modifications dans nos outils (par exemple, un nouveau symbole de liste bloquée). La plupart d’entre elles sont d’abord rencontrées par les clients qui soumettent, car il n’y a pas d’annonce (ou de liste) des règles.

Résumé

Dans la mesure du possible, jouez-le en toute sécurité en suivant les conseils d’Apple et en développant et en soumettant avec le dernier Xcode publié sur le App Store.

À son tour, utilisez la dernière version de Xamarin.iOS publiée. Cela permet de suivre les derniers correctifs susceptibles d’affecter les applications envoyées et de se conformer aux modifications de règle les plus récentes.

Lorsque ce n’est pas possible, envisagez d’utiliser une version Xcode et Xamarin.iOS plus ancienne correspondante. Cela peut fonctionner pendant un certain temps, mais à un moment donné Apple insistera sur les outils plus récents afin de planifier en conséquence.