Lier des bibliothèques Swift iOS

Important

Nous étudions actuellement l’utilisation de la liaison personnalisée sur la plateforme Xamarin. S’il vous plaît prendre cette enquête pour informer les efforts de développement futurs.

La plateforme iOS, ainsi que ses langages natifs et ses outils, évoluent constamment et il existe de nombreuses bibliothèques tierces qui ont été développées à l’aide des dernières offres. L’optimisation de la réutilisation du code et des composants est l’un des objectifs clés du développement multiplateforme. La possibilité de réutiliser les composants créés avec Swift est devenue de plus en plus importante pour les développeurs Xamarin à mesure que leur popularité parmi les développeurs ne cesse de croître. Vous connaissez peut-être déjà le processus de liaison des bibliothèques régulières Objective-C . Une documentation supplémentaire décrivant le processus de liaison d’une infrastructure Swift est désormais disponible, afin qu’elles soient consommables par une application Xamarin de la même manière. L’objectif de ce document est de décrire une approche de haut niveau pour créer une liaison Swift pour Xamarin.

Approche de haut niveau

Avec Xamarin, vous pouvez lier n’importe quelle bibliothèque native tierce pour qu’elle soit consommable par une application Xamarin. Swift est le nouveau langage et la création d’une liaison pour les bibliothèques créées avec ce langage nécessite des étapes et des outils supplémentaires. Cette approche implique les quatre étapes suivantes :

  1. Génération de la bibliothèque native
  2. Préparation des métadonnées Xamarin, ce qui permet aux outils Xamarin de générer des classes C#
  3. Création d’une bibliothèque de liaisons Xamarin à l’aide de la bibliothèque native et des métadonnées
  4. Utilisation de la bibliothèque de liaisons Xamarin dans une application Xamarin

Les sections suivantes décrivent ces étapes avec des détails supplémentaires.

Générer la bibliothèque native

La première étape consiste à avoir un Framework Swift natif prêt avec Objective-C un en-tête créé. Ce fichier est un en-tête généré automatiquement qui expose les classes Swift souhaitées, les méthodes et les champs les rendant accessibles à la fois Objective-C à C# et, en fin de compte, via une bibliothèque de liaison Xamarin. Ce fichier se trouve dans l’infrastructure sous le chemin suivant : <FrameworkName.framework>/Headers/<FrameworkName-Swift.h>. Si l’interface exposée contient tous les membres requis, vous pouvez passer à l’étape suivante. Sinon, d’autres étapes sont nécessaires pour exposer ces membres. L’approche dépend de l’accès ou non au code source de l’infrastructure Swift :

  • Si vous avez accès au code, vous pouvez décorer le ou les membres Swift requis avec l’attribut @objc et appliquer quelques règles supplémentaires pour que les outils de génération Xcode sachent que ces membres doivent être exposés au monde et à Objective-C l’en-tête.
  • Si vous n’avez pas accès au code source, vous devez créer une infrastructure Swift proxy, qui encapsule l’infrastructure Swift d’origine et définit l’interface publique requise par votre application à l’aide de l’attribut @objc .

Préparer les métadonnées Xamarin

La deuxième étape consiste à préparer les interfaces de définition d’API, qui sont utilisées par un projet de liaison pour générer des classes C#. Ces définitions peuvent être créées manuellement ou automatiquement par l’outil Objective Sharpie et le fichier d’en-tête FrameworkName-Swift.h> généré automatiquement<. Une fois les métadonnées générées, elles doivent être vérifiées et validées manuellement.

Générer la bibliothèque de liaison Xamarin.iOS

La troisième étape consiste à créer un projet spécial : la bibliothèque de liaison Xamarin.iOS. Il référence les frameworks et les métadonnées préparées à l’étape précédente, ainsi que toutes les dépendances supplémentaires dont dépend l’infrastructure respective. Il gère également la liaison des frameworks natifs référencés avec l’application Xamarin.iOS consommatrice.

Utiliser la bibliothèque de liaisons Xamarin

La quatrième et dernière étape consiste à référencer la bibliothèque de liaison dans une application Xamarin.iOS. Il suffit d’activer l’utilisation de la bibliothèque native dans les applications Xamarin.iOS ciblant iOS 12.2 et versions ultérieures. Pour les applications ciblant une version inférieure, certaines étapes supplémentaires sont requises :

  • Ajoutez des dépendances dylib Swift pour la prise en charge du runtime. À partir d’iOS 12.2 et Swift 5.1, le langage est devenu ABI (interface binaire d’application) stable et compatible. C’est pourquoi toute application ciblant une version iOS inférieure doit inclure les dépendances Swift dylibs utilisées par l’infrastructure. Utilisez le package NuGet SwiftRuntimeSupport pour inclure automatiquement les dépendances dylib requises dans le package d’application résultant.
  • Ajoutez un dossier SwiftSupport avec des dylibs signés, qui est validé par l’AppStore pendant le processus de chargement. Le package doit être signé et distribué à l’AppStore connect à l’aide des outils Xcode. Sinon, il sera automatiquement rejeté.

Procédure pas à pas

L’approche ci-dessus décrit les étapes générales requises pour créer une liaison Swift pour Xamarin. De nombreuses étapes de niveau inférieur sont impliquées et d’autres détails à prendre en compte lors de la préparation de ces liaisons dans la pratique, y compris l’adaptation aux modifications apportées aux outils et langues natifs. L’objectif est de vous aider à mieux comprendre ce concept et les étapes générales impliquées dans ce processus. Pour obtenir un guide détaillé pas à pas, reportez-vous à la documentation de Xamarin Swift Binding Walkthrough .