Probando Embeddinator-4000: De .NET a iOS, Android o macOS nativo

Introducción

Los desarrolladores de Xamarin conocen las librerías de Bindings y la herramienta Sharpie. Hablamos de una herramienta de línea de comandos que permite automatizar la creación de una librería .NET que exponga las capacidades de la librería nativa. Sin embargo, existen una enorme cantidad de grandes librerías .NET utilizadas en Xamarin, ¿cómo podemos permitir utilizar librerías .NET desde una aplicación iOS o Android nativa?. En ocasiones arrancamos Apps Xamarin que tienen una base nativa o incluso hacemos una segunda App en Xamarin cuando ya existe una primera con código nativo. ¿No sería fantástico poder reutilizar?.

¿Qué es Embeddinator-4000?

Embeddinator-4000 es una herramienta de línea de comandos que permite convertir librerías  .NET a librerías que pueden ser consumidas por otros lenguajes.

Embeddinator-4000

La herramienta toma una librería .NET y genera los enlaces necesarios para exponer la librería .NET como una librería nativa. El gran objetivo es permitir utilizar librerías .NET en otras plataformas con código y herramientas nativas. Sigue en desarrollo y por lo tanto, se siguen añadiendo más y más funcionalidad, actualmente permite convertir de .NET a C, C++, Objective-C (plataformas Apple) y Java (Android principalmente).

La librería .NET

Si la herramienta convierte una librería .NET a una librería nativa, necesitamos una librería .NET a utilizar, ¿no?. Vamos a utilizar una sencilla librería .NET que permite consumir la API Rest Netflix Roulette (permite obtener una película recomendada aleatoria de Netflix en base a una serie de filtros como la puntuación por ejemplo).

La librería desarrollada con código C# hace peticiones HTTP a la API utilizando HttpWebRequest y deserializamos Json con DataContractJsonSerializer.

Obtener información de películas

Utilizando Embeddinator

Llega el momento de utilizar la herramienta. Pero antes de ello, repasemos los requisitos.

Para convertir a librería Objective-C:

  • macOS 10.12 (Sierra) o superior.
  • Xcode 8.3.2 o superior.
  • Mono 5.0.

Para convertir  librería Java:

  • Java 1.8 o superior.
  • Mono 5.0.
  • Xcode 8.3.2 (en MacOS) .
  • Visual Studio 2017 con SDK de Windows 10 (en Windows).

Vamos a convertir nuestra librería .NET a un .framework, librería nativa para utilizar en un proyecto nativo iOS en XCode. Comenzamos con la instalación de la herramienta. Existen dos opciones:

  • Utilizar un paquete ya preparado listo para la instalación.
  • Sincronizar el repositorio y compilar.

La instalación del paquete es sencilla y la habitual:

Instalar la herramienta

Una vez instalada la herramienta, accediendo a un terminal tendremos acceso a la herramienta de línea de comandos con objcgen.

NOTA: La ruta absoluta de la herramienta es /Library/Frameworks/Xamarin.Embeddinator-4000.framework/Commands/objcgen.

Objective-C es un lenguaje utilizado en macOS, iOS, tvOS y watchOS. La herramienta soporta todas las plataformas aunque hay diferencias en el uso.

Vamos a centrarnos en iOS. Para utilizar la herramienta contamos con una serie de parámetros:

  • Platform: Plataforma destino. Posibles valores: android, windows, macos, ios, watchos, tvos.
  • Outdir: Directorio donde vamos a obtener el resultado.

objcgen Library.dll –target=framework –platform=iOS –outdir=output -c –debug

Utilizando la herramienta

Tendremos información de cada acción realizada:

Feedback

Al concluir la herramienta,  en la carpeta de salida (en nuestro ejemplo, se ha creado una carpeta llamada output) veremos lo siguiente:

La salida

Tenemos varios ficheros interesantes, a destacar:

  • .framework: Librería nativa preparada para utilizar en desarrollo nativo.
  • binddings: Código Objective-C con nuestra librería.

Probando el resultado

Creamos un nuevo proyecto iOS desde XCode:

Nuevo proyecto

Arrastramos el .framework al proyecto:

Copiar .framework

En las propiedades del proyecto, añadimos el framework recién copiado como Embedded Binaries:

Embedded Binaries

Creamos una interfaz de usuario sencilla pero suficiente para poder probar que todo funciona como esperamos:

La interfaz de usuario

Una caja de texto donde el usuario puede introducir el nombre de una película, un botón para hacer la búsqueda y algunso textos donde mostrarle información como la descripción, la puntuación, etc.

Al pulsar el botón debemos hacer la búsqueda. En el controlador:

- (IBAction)findMovie:(id)sender {
     NetflixRoulette_NetflixRouletteFetcher * fetcher = [[NetflixRoulette_NetflixRouletteFetcher alloc] initWithMovie: _movieTxtField.text];
 
     NetflixRoulette_NetflixRouletteResult * result = [fetcher getMovie];
 
     if (result) {
          _titleLabel.text = [result showTitle];
          _yearLabel.text = [result releaseYear];
          _ratingLabel.text = [result rating];
          _descLabel.text = [result summary];
     }
}

Trabajamos con la librería .NET pero utilizando en este caso código Objective-C.

El resultado:

 

El resultado

Tenéis el código fuente del ejemplo utilizado disponible en GitHub:

Ver GitHub

Limitaciones

Mencionamos previamente que estamos ante una herramienta en desarrollo y cuenta con por supuesto algunas limitaciones:

  • No podemos utilizar dos librerías generadas con la herramienta en la misma aplicación.
  • Debido a la falta de metadatos en .NET para la gestión de nulidad, se generan NS_ASSUME_NONNULL_BEGIN.
  • Igualmente carece en estos momentos de soporte a tipos genéricos.
  • El soporte a Apple Watch está en desarrollo.
  • Etc.

Conclusiones

El pasado //BUILD fue un momento repleto de grandes anuncios. Entre ellos, uno de mis favoritos (y la herramienta estaba ya disponible en GitHub previamente) fue el anuncio y demostración de esta herramienta, Embeddinator-4000. Viene a cubrir una necesidad real que me he encontrado en más de una ocasión. Poder reutilizar código .NET en plataformas nativas al igual que ya se podía utilizar código nativo en Xamarin rompe una barrera en determinados momentos. Con mejoras en esta herramienta, Xamarin Live Player, Xamarin.Forms llegando a más plataformas (Linux incluido) o Forms Embedding el futuro a corto plazo se ve muy emocionante. Y a ti, ¿que te parece?.

Más información

[Evento CartujaDotNet & SVQDotNet] The State of .NET

El evento

La industria está en un estado de continuo cambio. No es diferente ni mucho menos para desarrolladores .NET. ¿Qué significa eso para tus proyectos de hoy?, ¿tus habilidades se quedarán obsoletas rapidamente?, ¿en qué deberías centrarse ahora?.

El ponente

Tiberiu Covaci, Microsoft RD y MVP. Está en una posición única para compartir información basada en la experiencia del mundo real con proyectos propios o aquellos proyectos que puede ver en su papel de mentor y consultor, así como el feedback que recive de lectores de la revista CODE.

La fecha

El evento será el próximo Lunes, 03 de Julio de 16:00h a 18:00h (2 horas de duración).

¿Te apuntas?

Más información

[Material CartujaDotNet] Visual Studio 2017 Launch Event

El evento

El pasado 28 de Marzo celebrábamos en CartujaDotNet el lanzamiento de Visual Studio 2017!.

Visual Studio 2017 Launch Event

Contámos con varias sesiones cortas y directas donde vimos las principales novedades en el IDE además de novedades en productividad, Xamarin, Visual Studio Mobile Center, DevOps, etc. Además de por supuesto momentos para el networking!

El material

La presentación:

En cuanto a las demos técnicas realizadas, las tenéis disponible en GitHub:

Ver GitHubNos vemos en la próxima!

Más información

[Evento] Visual Studio 2017 Launch!

El evento

En CartujaDotNet vamos a celebrar el lanzamiento de Visual Studio 2017!.

Visual Studio 2017 Launch Event

Nada mejor que contar con varias sesiones cortas y directas donde veremos las principales novedades en el IDE además de novedades en productividad, Xamarin, Visual Studio Mobile Center, DevOps, etc.

Agenda

La agenda:

  • 19:00h – 19:10h: Recepción y bienvenida!
  • 19:10h – 19:20h: Instalación y novedades en rendimiento.
  • 19:20h – 19:40h: En búsqueda de la productividad.
  • 19:40h – 20:10h: Xamarin.
  • 20:10h – 20:40h: Visual Studio Mobile Center.
  • 20:40h – 21:00h: Visual Studio Team Services y DevOps.

La fecha

El evento tendrá lugar el próximo Martes, 28 de Marzo de 19:00h a 21:00h. Tendremos cinco sesiones técnicas de 30 minutos de duración cada una aproximadamente. Además contaremos con algún detalle entre los asistentes.

El lugar

El evento se celebrará en el Aula B1.34 de la ETS de Ingeniería Informática. Dirección detallada:

E.T.S. Ingeniería Informática – Universidad de Sevilla, Aula B1.32
Av. Reina Mercedes s/n
Sevilla Se 41012

ETS de Ingeniería Informática

ETS de Ingeniería Informática

Más información

[VideoBlog] Una introducción a Visual Studio Mobile Center

Introducción

El pasado Microsoft Connect 2016, en San Francisco, se presentaba Visual Studio Mobile Center con el firme objetivo de convertirse en el centro de control de nuestras aplicaciones móviles. Mobile Center soporta tanto aplicaciones Xamarin como aplicaciones nativas con Java, Objective-C o Swift además de aplicaciones React Native.

Visual Studio Mobile Center

Visual Studio Mobile Center

Incluye los siguientes servicios:

  • Build: Integración y entrega continua.
  • Test: Pruebas automáticas en dispositivos reales.
  • Reporte de errores: Analíticas de errores en tiempo real.
  • Distribución: Despliegue a usuarios o grupos.
  • Analíticas: Métricas de uso.
  • Autenticación: Integración sencilla con métodos comunes.
  • EasyTables: Crear almacenamiento de forma muy rápida.

Un vistazo a Visual Studio Mobile Center

Ante una nueva herramienta con tantas posibilidades, ¿algo mejor que probarla y verla en video?

Tenéis el código fuente del ejemplo utilizado disponible en GitHub:

Ver GitHubRecordad que podéis dejar cualquier comentario, sugerencia o duda en los comentarios.

Más información

[Material] Containers y Xamarin everywhere!

El evento

El pasado Martes, 07 de Febrero en la E.T.S. Ingeniería Informática tenía lugar un evento de las comunidades, CartujaDotNet, grupo de usuarios .NET de Sevilla y SVQXDG, grupo de desarrolladores Xamarin de Sevilla aprovechando una visita a la Universidad de los chicos de Microsoft DX. El evento que tenía como título “Containers y Xamarin everywhere!” proponía una divertida tarde donde hacer una introducción a Containers y Docker de la mano de Diego Martínez y posteriormente una sesión sobre testing de Apps Xamarin de la mano de un servidor.

Containers

Containers

El material

He tenido la oportunidad de participar en una de las sesiones tratando la creación y mantenimiento de pruebas automáticas de aplicaciones Xamarin. Concretamente vimos:

  • Introducción al concepto de pruebas unitarias.
  • Como crear pruebas unitarias a un proyecto Xamarin.
  • Conceptos básicos necesarios de Xamarin.UITest.
  • Crear proyecto de tipo Xamarin.UITest.
  • Introducción a Xamarin Test Cloud.
  • Lanzar pruebas de tipo UITest en Test Cloud.
  • Introducción a Visual Studio Mobile Center.

La presentación:

En cuanto a las demos técnicas realizadas, las tenéis disponible en GitHub:

Ver GitHub

Quisiera terminar agradeciendo a Diego Martínez por su colaboración y sesión en el evento, a la E.T.S. Ingeniería Informática y al club .NET de la universidad por su ayuda y facilidades a la hora de disponer de sala y por supuesto a todos los asistentes.

Nos vemos en la próxima!

Más información

[Eventos] re-Connect Tour

re-connectEl Tour

Tras un exitoso Microsoft Connect(); 2016, en New York, donde se presentaron importantes novedades relacionadas con la plataforma Cloud, novedades en .NET, Visual Studio para MacOS o novedades en Xamarin, ¿algo mejor que recopilar todas las novedades en un evento?.

Si, haciendo varios y organizarlos en un Tour por varias ciudades!.

Las ciudades y fechas son:

La agenda

  • 9:30 Más productividad que nunca en el desarrollo móvil multiplataforma con Xamarin
    En esta charla veremos las novedades más importantes que llegan de la mano de Xamarin. Para empezar el nuevo Visual Studio for Mac que permite crear aplicaciones iOS y Android con backend net core. Pero esa no es la única novedad: veremos en acción el previsualizador de Xamarin Forms, Xamarin Profiler y el espectacular Xamarin Inspector que lleva el desarrollo móvil a otro nivel. Y finalmente Visual Studio Mobile Center, la evolución de HockeyApp y la integración con toda la suite de movilidad de Microsoft.
  • 10:30 .NET Core & SQL ❤ Linux
    Net Core 1.1 ya está aquí, y a pesar de ser una versión “menor” no deja de tener novedades interesantes: la integración con los logs de Azure, mejoras de rendimiento y, por supuesto Entity Framework 1.1, entre otras. En esta charla desgranaremos las novedades de asp.net core 1.1 y mostraremos como EF1.1 permite trabajar con las últimas novedades de SQL Server. Comentaremos el concepto de SQL Server CPSA y como nos impacta eso como desarrolladores. Y por supuesto, veremos SQL Server for Linux en acción.
  • 11:30 Microsoft y el mundo de los contenedores
    En esta charla veremos las novedades incluídas en Visual Studio 2017 para facilitar el uso de Docker. Comentaremos que es Docker, como funciona y como con Visual Studio 2017 podemos crear aplicaciones netcore y empaquetarlas con Docker de forma sencilla, sin perder ni un ápice de productividad. Veremos también como publicar contenedores Docker en un AppService, como usar Azure Container Registry así como un esbozo de Azure Container Services. Y para finalizar comentaremos las novedades de VSTS al respecto de Docker.
  • 12:30 ASP Net Core & Visual Studio en 3 sabores, elige el tuyo
    En esta charla veremos lo sencillo que es desarrollar una aplicación netcore con cualquiera de las 3 ediciones de Visual Studio que disponemos, Visual Stduio, Visual Studio for Mac y Visual Studio Code 1.7 bajo Linux. Para ello crearemos una aplicación sencilla asp.net core que use MongoDb. Veremos todas las facilidades de la suite de Visual Studio para depurar código y para navegar por el código. Finalmente veremos cómo usar Docker desde la suite de Visual Studio para crear un contenedor con nuestra aplicación, y usando las nuevas CLI de Azure veremos cómo publicarlo en un AppService. Finalmente veremos cómo podemos usar DocumentDb en lugar de MongoDb en menos que canta un gallo

¿Te apuntas?

Más información

[Mesa redonda CartujaDotNet] ¿Cómo ser mas productivo?, GTD vs Uberman

Introducción

La productividad es un área de estudio por diversos tipos de expertos desde hace muchos años y está muy ligada a la gestión del tiempo de un profesional en su puesto de trabajo.

Ya no se trata de trabajar más rápido y hacer más en menos, sino de aumentar nuestra productividad.

Gettings Things Done o más conocido como GTD, es un método de productividad creado por David Allen basado en concentrar la mente en realizar tareas pendientes guardadas previamente, evitando la necesidad de recordar lo que hay que hacer. Es una forma potente de almacenar tareas, hacer seguimiento y revisión.

GTD

GTD

Por otro lado, el método Uberman de sueño polifásico propone manipular los distintos estados de sueño para conseguir que el cuerpo utilice directamente los estados MOR (Movimientos Oculares Rápidos) o REM (Rapid Eye Movements). Pasamos por varias estapas de sueño siendo la REM aquella en la que la mente descansa y soñamos. El objetivo final es dormir 20 minutos cada 4 horas entrando directamente en fase REM consiguiendo el descanso necesario con muchas menos horas de sueño.

Uberman

Uberman

Dos propuestas conocidas y extendidas con puntos de vista muy diferentes. Por un lado se busca la priorización y orden para ganar concentración, por otro lado, se busca menor cantidad de horas de sueño o lo que es lo mismo, una cantidad de horas productivas más elevada.

Mesa redonda

Desde CartujaDotNet y ante interesantes conversaciones en nuestras quedadas (te recomendamos asistir!) hemos decidido organizar una interesante mesa redonda. Entre todos y con la ayuda de Juan María Lao, quien aplica diariamente GTD y David R. Noguera, que lleva a cabo Uberman, tratemos ambas propuestas y hablemos de métodos de productividad para sacar sin duda interesantes conclusiones entre todos.

¿Te esperamos?

Más información

[Evento Online] La importancia de la accesibilidad en el desarrollo

Show-02-WFIntroducción

La accesibilidad es un factor de vital importancia que por suerte, es tenida en cuenta cada vez con mayor frecuencia y peso en desarrollos web, móviles, etc.

La importancia de la accesibilidad

La importancia de la accesibilidad

Hemos tratado en ocasiones aspectos relacionados con el desarrollo en eventos como por ejemplo, la sintetización de textos en voz, comandos de voz o el uso de Cortana pero…y las herramientas de desarrollo, ¿cómo programa una persona ciega?, ¿cómo diseña una interfaz?, ¿hay vida después del ratón?.

El evento

En esta ocasión, me acompañaran en un Hangout Josué Yeray y Santiago Porras, y podremos disfutar de la compañia de Juanjo Montiel.

Juanjo es un apasionado de la tecnología y de la música. Es desarrollador de software y consultor de accesibilidad en una empresa de Barcelona, conjuga su trabajo con el desarrollo como hobbie de herramientas accesibles para mejorar el día a día de las personas con discapacidad. Ciego de nacimiento, considera que su discapacidad es un reto a superar. Le encantan los retos, y afirma que su ceguera, a pesar de ser un problema, también le ha hecho mejor, al tener que espabilarse y buscar los trucos necesarios para trabajar en igualdad de condiciones con el resto de sus compañeros.

En este evento de CartujaDotNet analizaremos de primera mano, las herramientas, trucos y necesidades relacionadas con la accesibilidad en el desarrollo.

El evento será el próximo Jueves, 28 de Julio.

  • 19:00 en España
  • 13:00 en Colombia
  • 12:00 en México Centro
  • 13:30 en Venezuela
  • 15:00 en Chile continental

¿Te apuntas?

Más información

Microsoft Tech Summit

Introducción

El pasado mes de Febrero, se repetía la .NET Conference Spain con más de 1700 asistentes y otras 5000 personas por streaming, sumado a grandes sesiones, stands o la presencia de Satya Nadella, un rotundo éxito.

dotNet Spain Conference 2016

dotNet Spain Conference 2016

Microsoft Tech Summit

Ante tal éxito, este año se plantea un nuevo evento para el próximo 6 de octubre en el Palacio Municipal de Congresos de Madrid, llega el Microsoft Tech Summit. Será un evento con más de 40 sesiones de más de una hora destinado a desarrolladores y profesionales de infraestructura (Xamarin, DevOps, Bots o Windows Server 2016 por poner ejemplos).

Call 4 Papers

Además de poder asistir al evento, ya esta abierto el Call 4 Papers pudiendo enviar propuesta antes del 7 de septiembre a esmsdn@microsoft.com con el asunto “Call4Papers: Microsoft Tech Summit”.

  • Windows Server 2016: Hyper-V, Containers, Identity, Nano Server, OMS, Azure Stack, etc.
  • DevOps: CHEF, Docker, Puppet, CloudBees, ARM Templates, Visual Studio Team Services, etc
  • Big Data & Analytics: Cortana Intelligence Suite, SQL Data Warehouse, Machine Learning, R, etc.
  • Cognitive Services & Conversations as a Platform: Bot Framework SDK, Cortana Proactive Actions, etc.
  • Mobile Apps & Cross-Platform: Xamarin, Apache Cordova, Windows Centennial, etc.
  • Cloud Dev: Azure App Services, Azure Functions, Service Fabric, Microservices, etc.
  • IoT: Azure IoT Hub, Azure IoT Suite, etc.
  • OSS: Linux Apps on Azure, Azure Container Services, .NET Core, etc.
  • Productivity: Office 365, Sharepoint Dev, etc.
  • Business Intelligence: PowerBI Embedded, etc.
  • Coding 4 Fun: Juegos, etc.
  • Others: Cualquier otro tema relacionado con tecnologías Microsoft.

No te lo puedes perder!

Más información