Enlace de bibliotecas Swift de iOS

Importante

Estamos investigando el uso de enlaces personalizados en la plataforma Xamarin. Realice esta encuesta para informar de esfuerzos de desarrollo futuros.

La plataforma iOS, junto con sus lenguajes nativos y sus herramientas, evoluciona constantemente y hay muchas bibliotecas de terceros que se han desarrollado con las ofertas más recientes. La maximización de la reutilización del código y de los componentes es uno de los principales objetivos del desarrollo multiplataforma. La capacidad de reutilizar los componentes creados con Swift es cada vez más importante para los desarrolladores de Xamarin a medida que su popularidad entre los desarrolladores sigue creciendo. Es posible que ya esté familiarizado con el proceso de enlace de Objective-C bibliotecas regulares. Ahora hay documentación adicional disponible que describe el proceso de enlazar un marco de Swift,por lo que una aplicación Xamarin los puede consumir de la misma manera. El propósito de este documento es describir un enfoque de alto nivel para crear un enlace Swift para Xamarin.

Enfoque de alto nivel

Con Xamarin, puede enlazar cualquier biblioteca nativa de terceros para que una aplicación de Xamarin la pueda consumir. Swift es el nuevo lenguaje y la creación de enlaces para bibliotecas creadas con este lenguaje requiere algunos pasos y herramientas adicionales. Este enfoque implica los cuatro pasos siguientes:

  1. Creación de la biblioteca nativa
  2. Preparación de los metadatos de Xamarin, que permite que las herramientas de Xamarin generen clases de C#
  3. Creación de una biblioteca de enlaces de Xamarin mediante la biblioteca nativa y los metadatos
  4. Consumo de la biblioteca de enlaces de Xamarin en una aplicación de Xamarin

En las secciones siguientes se describen estos pasos con detalles adicionales.

Compilación de la biblioteca nativa

El primer paso es tener un marco de Trabajo de Swift nativo listo con Objective-C el encabezado creado. Este archivo es un encabezado generado automáticamente que expone las clases, los métodos y los campos de Swift deseados, lo que los hace accesibles para C# y, en última instancia, a través de una Objective-C biblioteca de enlaces de Xamarin. Este archivo se encuentra dentro del marco de trabajo en la ruta de acceso siguiente: FrameworkName > .framework/Headers/ < FrameworkName > -Swift.h. Si la interfaz expuesta tiene todos los miembros necesarios, puede ir directamente al paso siguiente. De lo contrario, se requieren pasos adicionales para exponer esos miembros. El enfoque dependerá de si tiene acceso al código fuente del marco swift:

  • Si tiene acceso al código, puede decorar los miembros de Swift necesarios con el atributo y aplicar algunas reglas adicionales para que las herramientas de compilación de Xcode sepan que estos miembros deben exponerse al mundo y al @objcObjective-C encabezado.
  • Si no tiene acceso al código fuente, debe crear un marco De Swift de proxy, que encapsula el marco swift original y define la interfaz pública requerida por la aplicación mediante el @objc atributo .

Preparación de los metadatos de Xamarin

El segundo paso es preparar las interfaces de definición de API, que un proyecto de enlace usa para generar clases de C#. La herramienta Objective Sharpie y el archivo de encabezado FrameworkName -Swift.h generados automáticamente anteriormente podrían crear estas definiciones de forma manual o automática. Una vez generados los metadatos, se deben comprobar y validar manualmente.

Compilación de la biblioteca de enlaces de Xamarin.iOS

El tercer paso consiste en crear un proyecto especial: biblioteca de enlaces de Xamarin.iOS. Hace referencia a los marcos y los metadatos preparados en el paso anterior junto con las dependencias adicionales de las que depende el marco correspondiente. También controla la vinculación de los marcos nativos a los que se hace referencia con la aplicación Xamarin.iOS que lo consume.

Uso de la biblioteca de enlaces de Xamarin

El cuarto y último paso consiste en hacer referencia a la biblioteca de enlaces en una aplicación xamarin.iOS. Es suficiente para habilitar el uso de la biblioteca nativa en aplicaciones xamarin.iOS destinadas a iOS 12.2 y superiores. Para las aplicaciones destinadas a una versión inferior, se requieren algunos pasos adicionales:

  • Agregue dependencias de Swift Dylib para la compatibilidad con el entorno de ejecución. A partir de iOS 12.2 y Swift 5.1, el lenguaje se convirtió en ABI (interfaz binaria de aplicación) estable y compatible. Este es el motivo por el que cualquier aplicación destinada a una versión inferior de iOS debe incluir las dependencias de bibliotecas de Swift usadas por el marco. Use el paquete de NuGet SwiftRuntimeSupport para incluir automáticamente las dependencias de dylib necesarias en el paquete de aplicación resultante.
  • Agregue la carpeta SwiftSupport con dylibs firmados, que appstore valida durante el proceso de carga. El paquete debe firmarse y distribuirse a la conexión de AppStore mediante las herramientas de Xcode; de lo contrario, se rechazará automáticamente.

Tutorial

En el enfoque anterior se describen los pasos de alto nivel necesarios para crear un enlace swift para Xamarin. Hay muchos pasos de nivel inferior implicados y otros detalles que se deben tener en cuenta al preparar estos enlaces en la práctica, incluida la adaptación a los cambios en las herramientas y los lenguajes nativos. La intención es ayudarle a obtener una comprensión más profunda de este concepto y de los pasos de alto nivel implicados en este proceso. Para obtener una guía detallada paso a paso, consulte la documentación del tutorial de enlace de Xamarin Swift.