Introducción a Objective Sharpie
Importante
Objective Sharpie es una herramienta para desarrolladores experimentados de Xamarin con conocimientos avanzados de Objective-C (y, por extensión, de C). Antes de intentar enlazar una biblioteca Objective-C, debe tener conocimientos sólidos sobre cómo compilar la biblioteca nativa en la línea de comandos (y comprender cómo funciona la biblioteca nativa).
Instalación de Objective Sharpie
Objective Sharpie es actualmente una herramienta de línea de comandos independiente para Mac OS X 10.10 y versiones posteriores, y no es un producto de Xamarin compatible de forma generalizada. Solo deben usarlo desarrolladores avanzados, para ayudar a crear un proyecto de enlace a una biblioteca de Objective-Cde terceros.
Objective Sharpie se puede descargar como un instalador de paquetes OS X estándar. Ejecute el instalador y siga todas las indicaciones en pantalla del asistente para la instalación:
- Versión actual: 3.5
Sugerencia
Use el comando sharpie update
para actualizar a la versión más reciente.
Tutorial básico
Objective Sharpie es una herramienta de línea de comandos proporcionada por Xamarin que ayuda a crear las definiciones necesarias para enlazar una biblioteca de Objective-C de terceros a C#. Cuando se usa Objective Sharpie, el desarrollador tendrá que modificar los archivos generados después de que Objective Sharpie finalice para solucionar los problemas que la herramienta no haya podido controlar automáticamente.
Siempre que sea posible, Objective Sharpie anotará las API con las que tiene alguna duda sobre cómo enlazar correctamente (muchas construcciones en el código nativo son ambiguas).
Estas anotaciones aparecerán como atributos [Verify]
.
La salida de Objective Sharpie es un par de archivos (ApiDefinition.cs
y StructsAndEnums.cs
) que se pueden usar para crear un proyecto de enlace que se compila en una biblioteca que puede usar en aplicaciones de Xamarin.
Importante
Objective Sharpie incluye una regla principal para el uso adecuado: debe pasarle absolutamente los argumentos correctos de la línea de comandos del compilador de Clang para garantizar el análisis adecuado. Esto se debe a que la fase de análisis de Objective Sharpie es simplemente una herramienta implementada en la API libtooling de Clang.
Esto significa que Objective Sharpie tiene toda la potencia de Clang (el compilador de C/Objective-C/C++ que compila realmente la biblioteca nativa que enlazará) y todo su conocimiento interno de los archivos de encabezado para el enlace.
En lugar de convertir el AST analizado al código de objeto, Objective Sharpie convierte el AST a un enlace de C# "scaffold" adecuado para la entrada a las herramientas de enlace de Xamarin bmac
y btouch
.
Si Objective Sharpie produce un error durante el análisis, significa que se produjo un error en Clang durante su fase de análisis al intentar construir el AST, y deberá averiguar el motivo.
NUEVO La versión 3.0 intenta corregir parte de esta complejidad al admitir directamente proyectos de Xcode. Si una biblioteca nativa tiene un proyecto Xcode válido, Objective Sharpie puede evaluar el proyecto para un destino y una configuración especificados para deducir los archivos de encabezado de entrada necesarios y las marcas del compilador.
Si no hay ningún proyecto de Xcode disponible, deberá estar más familiarizado con el proyecto mediante la deducción de los archivos de encabezado de entrada correctos, las rutas de búsqueda de archivos de encabezado y otras marcas de compilador necesarias. Es importante tener en cuenta que las marcas del compilador usadas para compilar la biblioteca nativa son las mismas que se deben pasar a Objective Sharpie. Se trata de un proceso más manual y que requiere estar un poco familiarizado con la compilación de código nativo en la línea de comandos con la cadena de herramientas de Clang.