Un proyecto multiplataforma típico, dividido en proyectos separados para cada plataforma y un proyecto para una biblioteca compartida. La biblioteca compartida puede contener código independiente de la plataforma y una interfaz de usuario simple en XAML. Esta es una separación bastante conveniente que nos permite estructurar fácilmente el código. Una ventaja definitiva.
Marcos
- ¿Cómo es Xamarian más eficiente en comparación con otras plataformas de desarrollo de aplicaciones móviles?
- ¿Cuál es la principal empresa de desarrollo de aplicaciones móviles en Los Ángeles?
- Cómo encontrar un buen programador técnico y desarrollador de aplicaciones
- ¿Puedo obtener un conjunto de datos de contraseñas utilizadas solo en aplicaciones móviles en algún lugar?
- ¿Cómo es desarrollar una aplicación de Android sin ayuda?
El kit de herramientas básico contiene C # y el marco .NET. Un lenguaje práctico de alto nivel es otra ventaja.
.NET framework + Xamarin.Forms es un conjunto de marcos disponibles para una biblioteca compartida. Esto es básicamente un kit para modelar los datos de la aplicación. No hay características específicas de la plataforma, como el acceso al sistema de archivos y la cámara. Por un lado, esto aumenta el volumen del código, por otro lado, permite una mejor estructuración del código.
Existen marcos específicos de plataforma como Xamarin.iOS y Xamarin.Droid, así como la interfaz de usuario de C # para todos los marcos de plataformas nativas (por ejemplo, Core Data para iOS y Android.Support.v4 para Android). La mayoría de las tareas, esto permite evitar el uso de bibliotecas de terceros y utilizar las capacidades de la plataforma estándar sin envoltorios adicionales. Una gran virtud gorda.
Obviamente, la necesidad de usar Xamarin (Mono) y los marcos .NET aumenta el tamaño de la aplicación en 10 MB, sin embargo, esto es más una recompensa por las características multiplataforma que un inconveniente sustancial.
La interfaz de usuario
Puede crear interfaces de usuario en Xamarin. Hay dos enfoques para hacer eso:
Xamarin.Forms
Xamarin.Forms como una “descripción” multiplataforma de la interfaz de usuario que con la ayuda de renders especiales se transforma en los elementos nativos correspondientes. (Xamarin.Forms.ListView → UITableView). Debido a esto, la IU será visualmente diferente para ambas plataformas (ya que el botón nativo de iOS es diferente de un botón nativo de Android).
El comportamiento de cada elemento de una plataforma se puede editar a través de un renderizador. La interfaz de usuario se describe en XAML en el código. Hay un visualizador estándar integrado en Xamarin IDE que usa un simulador de dispositivo. El uso de esta funcionalidad puede facilitar y acelerar significativamente el proceso de creación de UI, pero también restringe la arquitectura de la aplicación. Requiere tener en cuenta el estado de la aplicación cuando la ejecuta un visualizador. Esta solución es ideal para las aplicaciones con una interfaz de usuario simple o prototipos que no son molestados por la interfaz de usuario.
IU de plataforma nativa
El uso de la IU nativa de cada plataforma es una opción para aplicaciones de diseño pesado. Xamarin admite las interfaces C # de todos los marcos nativos de la plataforma, incluidos xib y storyboard para iOS y diseño para Android. Por lo tanto, el trabajo de los elementos de la interfaz de usuario no es diferente de la experiencia similar en XCode y Android Studio.
Bibliotecas Xamarin
Las bibliotecas de Xamarin se distribuyen a través de NuGet. Una vez más, la mayoría de las tareas de su aplicación pueden ser realizadas por alguna biblioteca, que hay en gran número. Ya sea de desarrolladores externos o de Xamarin, las bibliotecas están ahí. Xamarin Studio tiene incorporado un administrador de paquetes NuGet, que permite encontrar e instalar rápidamente el paquete apropiado, así como cargar una biblioteca personal en un entorno compartido.
Bibliotecas iOS y Android
Si la funcionalidad que necesita no se puede encontrar completamente en las bibliotecas de Xamarin, puede conectar las bibliotecas adicionales de iOS (.a) y Android (.so, .jar). Sin embargo, este es un procedimiento más complejo:
La biblioteca С / Objective-C / Swift para iOS
- Cree un proyecto en XCode , ensamble una biblioteca (no olvide verificar las dependencias).
1.1 Cree un archivo FAT para todas las plataformas utilizadas.
1.2 Agregue el Proyecto de enlaces de biblioteca de iOS a Xamarin.
1.3 Agregue el archivo de biblioteca .a recibido al proyecto.
1.4 Especifique los indicadores correctos en los atributos del archivo .a.
1.5 Crear la IU mediante P / Invoke.
Es probable que esto te deje con una multitud de llamadas [DllImport ()]. Puede solucionarlo con la ayuda de la utilidad Objective Sharpie, ya que puede procesar los archivos de encabezado de la biblioteca y crear una descripción de biblioteca de IU bastante precisa. Sin embargo, el resultado aún debe probarse manualmente.
2. Utilice CocoaPods para bibliotecas y dependencias simples. Realmente simplifica el paso 1 al descargar la biblioteca, ensamblarla y crear la interfaz de usuario a través de un solo comando en la Terminal. Sin embargo, las bibliotecas complejas con dependencias de otros pods no se pueden manejar tan fácilmente; así que le aconsejo que utilice el enfoque del paso 1.
Para Android
3. Configure las bibliotecas C para Android siguiendo el mismo procedimiento complejo que para iOS en el paso 1.
4. Agregue la biblioteca .jar / .aar para Android. Es bastante simple aquí:
4.1 Agregar una biblioteca directamente al proyecto de la aplicación de Android.
4.2 Especifique las bibliotecas ABI compatibles correctas.
Xamarin analizará la interfaz de usuario Java de la biblioteca y creará su equivalente en C #. Esta es definitivamente la forma más fácil de cuatro.
Conclusión
Xamarin es una gran herramienta para la creación de prototipos, la creación de un MVP y aplicaciones con la interfaz de usuario diseñada a partir de los elementos estándar. En ese caso, puede alcanzar una reutilización de código del 80 al 90% entre las plataformas.
Otra área de implementación es la clase de aplicaciones con lógica comercial pesada. Al utilizar el enfoque nativo para construir la interfaz de usuario, puede implementar el diseño de cualquier complejidad. El puntaje porcentual de reutilización depende completamente del tamaño del modelo y la lógica empresarial de la aplicación.
No creo que tenga sentido usar Xamarin para crear aplicaciones con un modelo simple y una lógica de negocios, así como aplicaciones que se adentren en los gráficos (juegos) o muestren requisitos de alto rendimiento.
Puede encontrar el proyecto de muestra que utilicé en este artículo en GitHub.