Puis-je utiliser une version antérieure de Xcode ou Xamarin.iOS ?
La documentation Xamarin suppose l’utilisation de la dernière version de Xamarin.iOS et de Xcode, ce qui est recommandé. Toutefois, certains clients préfèrent utiliser les versions antérieures de Xamarin.iOS et/ou Xcode, et souhaitent 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 antérieure (que celle mentionnée dans les exigences 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 ou
MT4109
desMT0091
erreurs si des API sont manquantes. Dans la plupart des cas, l’activation de l’éditeur de liens managés aide (en supprimant l’API). - Les builds 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 dernière version de Xamarin.iOS lors du développement et de l’envoi d’applications. Apple nécessite l’utilisation du Xcode le plus récent lors de l’envoi d’applications.
Notez que l’utilisation de la dernière version de Xcode n’empêche pas votre application de cibler les versions antérieures d’iOS. Les versions iOS prises 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 en xcode-select
ligne de commande.
Toutefois, des circonstances rares 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 version.
Chaque version d’Apple est unique cependant, et vous pouvez rencontrer d’autres pièges non documentés ici.
Ces défis sont parfois non trivials à résoudre. Ainsi, chaque fois que possible, tenez compte de la configuration prise en charge de la dernière version de Xcode et de la dernière version de Xamarin.iOS.
Utilisation d’un ancien Xamarin.iOS avec un ancien Xcode
La mise à jour de Xamarin.iOS et Xcode n’est pas possible, au moins pendant un certain temps. La limite est que, à un moment donné, Apple exigera une version minimale de Xcode pour soumettre 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 et de suivre progressivement 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 de la nouvelle version Xamarin.iOS avec xcode plus ancien
Xamarin.iOS en général 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 ou
MT4109
desMT0091
erreurs si des API sont manquantes.- Dans la plupart des cas, l’activation de l’éditeur de liens managés aide (en supprimant les liaisons managées pour la nouvelle API) si elle n’est pas utilisée.
- Les builds 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 de Xcode avec les anciennes versions de Xamarin.iOS
Ce cas d’usage est beaucoup plus difficile, car Xamarin.iOS ne peut pas prédire les exigences changeantes du nouveau Xcode. Les mises à jour de macOS peuvent é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 tromper, notamment :
- Incompatibilités avec
mlaunch
:- La prise en charge du simulateur peut ne pas fonctionner correctement (ou du tout)
- La prise en charge de l’appareil 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 AppStore
Apple se réserve le droit de mettre à jour les règles de soumission d’AppStore à tout moment. Ces modifications de règle ne sont que parfois annoncées à 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 modifications de règle, Apple ajoute souvent des validations supplémentaires aux applications soumises ou renforce les applications existantes. Certaines de ces modifications nécessitent des modifications dans nos outils (par exemple, un nouveau symbole bloqué). La plupart d’entre eux sont d’abord rencontrés par les clients qui soumettent, car il n’existe aucune annonce (ou 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 sur et en les soumettant avec la dernière version de Xcode publiée sur l’App Store.
À son tour, utilisez la dernière version de Xamarin.iOS. Cela permet de suivre les derniers correctifs susceptibles d’affecter les applications soumises et de se conformer aux modifications de règle les plus récentes.
Si cela n’est pas possible, envisagez d’utiliser une version Xcode et Xamarin.iOS antérieure mise en correspondance. 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.