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 y herramientas nativos, está en constante evolución y hay muchas bibliotecas de terceros desarrolladas con las últimas ofertas. 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, ya que su popularidad entre los desarrolladores sigue creciendo. Es posible que ya tenga conocimientos sobre el proceso de enlace de las bibliotecas de Objective-C normales. Ahora hay documentación adicional en la que se describe el proceso de enlazar un marco de Swift, de modo que una aplicación de Xamarin lo pueda utilizar de la misma manera. El objetivo de este documento es describir un enfoque general a fin de crear un enlace de 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 para la creación de enlaces para las bibliotecas compiladas con este lenguaje se necesitan 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 a las herramientas de Xamarin generar clases de C#
  3. Creación de una biblioteca de enlaces de Xamarin con la biblioteca nativa y los metadatos
  4. Uso 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 consiste en tener una instancia nativa de Swift Framework lista con el encabezado Objective-C creado. Este archivo es un encabezado generado automáticamente que expone las clases, métodos y campos de Swift deseados, lo que hace que sean accesibles para Objective-C y en última instancia para C# mediante una biblioteca de enlaces de Xamarin. Este archivo se encuentra en el marco en la ruta de acceso siguiente: <NombreDelMarco>.framework/Headers/<NombreDelMarco>-Swift.h. Si la interfaz expuesta tiene todos los miembros necesarios, puede ir directamente al paso siguiente. De lo contrario, se necesitan 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 @objc y aplicar algunas reglas adicionales para que las herramientas de compilación de Xcode sepan que estos miembros se deben exponer a Objective-C y al encabezado.
  • Si no tiene acceso al código fuente, debe crear un marco Swift de proxy, que encapsula el marco Swift original y define la interfaz pública necesaria para la aplicación mediante el atributo @objc.

Preparación de los metadatos de Xamarin

El segundo paso consiste en preparar las interfaces de definición de API, que un proyecto de enlace usa para generar clases de C#. Estas definiciones se pueden crear de manera manual o automática mediante la herramienta Objective Sharpie y el archivo de encabezado <NombreDelMarco>-Swift.h generado automáticamente. Una vez que se generen los metadatos, se deben comprobar y validar manualmente.

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

El tercer paso consiste en crear un proyecto especial: una 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 de consumo.

Uso de la biblioteca de enlaces de Xamarin

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

  • Agregue dependencias dylib de Swift para la compatibilidad con el entorno de ejecución. A partir de iOS 12.2 y Swift 5.1, el lenguaje es estable y compatible con ABI (interfaz binaria de aplicación). Es el motivo por el que cualquier aplicación destinada a una versión inferior de iOS debe incluir las dependencias dylib de Swift usadas por el marco. Use el paquete NuGet SwiftRuntimeSupport para incluir automáticamente las dependencias dylib necesarias en el paquete de aplicación resultante.
  • Agregue la carpeta SwiftSupport con dylib con firma, que AppStore valida durante el proceso de carga. El paquete se debe firmar y distribuir 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 generales necesarios para crear un enlace de 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 paso a paso detallada, consulte la documentación del Tutorial de enlace de Swift en Xamarin.