Acerca de...
El equipo
Encuestas
Política de privacidad
WinTablets

Encuesta

¿Cual crees que triunfará?

Ver Resultados

Cargando ... Cargando ...

últimas entradas importantes

Categorías

Entradas recientes

Archivos

13
Ene 2015
DesarrolloInteropMultiplataformarfogdev

Sobreviviendo (casi) a la instalación de QT/Xamarin en OS X

Os voy a contar cómo tener una instalación funcional de esas herramientas de desarrollo, porque la instalación se las trae más allá de lo normal, sobre todo si quieres desarrollar para Android e iOS.

No es que sea difícil instalar las dos a la vez, es que es difícil instalar cualquiera de ellas.

Bueno, el proceso de instalación es sencillo. Uno se baja el instalador y lo ejecuta. Sigue los pasos y ya está todo instalado.

Instalado.

Que funcione es otra cosa.

Por ejemplo, instalando Xamarin según el instalador por defecto, cuando tiras a hacer un proyecto para Android con Xamarin.Forms descubres que no se ha instalado el emulador necesario y que tienes dos configurados por defecto que tienes que reparar antes de lanzarlos. Luego, como la versión mínima para que Forms funcione en un Android es la 4.0.3 y esos emuladores ejecutan 2.3.3, el programa da error al hacer el deploy.

Otro problema con Xamarin, que todavía no tengo resuelto y he tenido que enviar un correo al soporte técnico, es que no he podido activar la parte de iOS…

Los problemas con QT son algo menores aunque andan del brazo. En este caso la instalación para Android requiere otros elementos previos que no se comunican claramente, y terminas con un QT que si bien funciona con iOS, con Android no.

En fin, que llevo dos días con esto y todavía no tengo claro si me va a servir alguna de las dos herramientas o no porque no he podido lanzar nada en los emuladores.

Añadamos que son de pago. Ambas. La más barata de QT cuesta 20€ más IVA (24%, ojo) al mes, o 240€ al año. Pagando eso puedes desarrollar para iOS, Android y WinRT (Windows Phone 8.1 y Windows 8.1) mientras pagues la cuota. Cuando dejes de hacerlo, lo que tengas en la tienda seguirá en marcha, pero ya no el IDE dejará de funcionar.

La más barata de Xamarin son 25$ USA por mes y por plataforma. Para igualarnos a QT, serían 50$ al mes o 538$ al año (hay descuento si compras un año completo). Si compras un año puedes seguir desarrollando después de dejar de pagar, pero sin actualizaciones. Si pagas mes a mes te pasará igual que con QT.

La tabla siguiente resume los precios:

QT Xamarin Xamarin iOS+Android
Mensual Indie 20€ 25$/plataforma 50$
Mensual Pro 109€ No tiene No tiene
Anual Indie 240€ 399$ 538$
Anual Pro 1308€ 999$ 1798$

Como veis, Xamarin es algo más caro frente a la ventaja de conservar la licencia de uso. Desde Windows, ambas plataformas permiten desarrollar para Windows Phone, pero desde Visual Studio. Es decir, puedes compartir el código (o casi todo el código) pero necesitas Visual Studio sí o sí para compilar.

Hasta donde sé, ambos permiten desarrollar para iOS 7/8 y Android API 9 (Android 2.3.x), aunque si quieres usar Xamarin.Forms (que es lo interesante de esta plataforma), sólo está disponible para Android 4.0.3 (Api 15).

Lo primero que tienes que instalar es Android Studio. Aunque no lo vayas a usar, tiene que estar en tu sistema. Si tienes Mavericks o Yosemite, verás que no se puede ejecutar.

Con dos cojones, te dirá que no encuentra Java. Y no vayas a Oracle a bajarte un JRE para OS X porque después de instalarlo te dirá que sigue sin encontrar Java. Tienes que bajarte este Java, que es el Java 6 que supuestamente venía integrado con OS X pero que Apple decidió eliminar.

Tampoco sé si ese Java tiene algún fallo de seguridad gordo o no. Lo único que sé es que Android Studio no funciona sin eso.

Luego tienes que ejecuta Android Studio, que te guiará por una serie de pasos para instalar más cosas.

Actualización 11 febrero 2015: Si cuando empieces a instalar Android Studio, te sale que tiene una actualización, vete al menú y elige «Check for Updates» y actualiza. La versión 1.0.3 parece que es más coherente con lo que instala y cómo lo instala. Eso sí, de instalar el Java 6 que venía con OS X no te libra ni el Tato.

Aquí no termina todo, lo mejor que puedes hacer es crearte un proyecto de demo y comprobar que los emuladores van…

No, espera, no, todavía no puedes hacer eso. Después de crear un proyecto por defecto te preguntará que dónde está el SDK… que él mismo ha instalado… Kafkiano. Ignoralo y sigue.

Has de actualizar el SDK de Android. Para ello con el Android Studio abierto y un proyecto cargado, nos vamos a Tools -> Android -> Android SDK manager, actualizamos los que haya (8 en mi caso) y ya de paso, si queréis, instaláis más emuladores porque lo único que se ha instalado es Android 5.0.1 y el emulador del Nexus 5 que encima no funciona.

Un consejo: usad los x86 porque tienen un rendimiento aceptable. Los ARM… bueno, los ARM simplemente funcionan.

Después de eso ya podéis cerrar el Android Studio y volver a lanzarlo. Con suerte todo irá como la seda y podréis ejecutar vuestro programa demo. O no. O te vuelve a salir el error del SDK. Tienes que instalar uno y luego apuntarlo. El JDK se instala en /Library/Java/JavaVirtualMachines/<jdk>/Contents/Home/

¿Que dónde está documentado? Pues debe ser que en el culo de Larry Page, tatuado. Podríais pensar que uno debe instalar el SDK antes que Android Studio, pero no porque a veces este paso no es necesario.

¿Ya te va todo eso? ¿No? Pues lo siento, no puedo ayudarte porque son taaaantas cosas las que pueden fallar…

Supongamos que va todo bien.

Ahora, si vas a instalar QT, necesitarás en NDK de Java. Si no, pues te puedes saltar el paso. Instalar el NDK “a pelo” es otra de esas cosas increíblemente extrañas de hacer.

Primero hay que bajarlo. Es un fichero .bin que hay que descomprimir, pero no lo hagas desde el Finder o entrarás en el bucle sin retorno.

Lo bajas y le cambias los atributos a ejecutable y desde la consola lo ejecutas. Se descomprime en un pentillón de carpetas.

Como esto solo vale para QT, y no nos gusta enmarranar más el sistema, que ya lo enmarranan a gusto Java, Android Studio y Xamarin, nos creamos una carpeta llamada Qt que cuelgue de nuestro Home.

Allí ponemos el NDK descomprimido.

Ahora nos bajamos Apache-ant de aquí. Si tenemos ganas de seguir marraneando el sistema de ficheros de OS X, podríamos instalarlo de forma automática con Homebrew o MacPorts. Si no, bajamos del sitio indicado y descomprimimos en una carpeta dentro de Qt.

Otro paso es instalar Xcode en Mac. Ese paso es trivial. Una vez hecho, si queremos los emuladores de iOS 7.1, tenemos que descargarlos desde el propio Xcode.

Podríamos lanzar un proyecto de demo a ver si va todo bien. Ya os adelanto que no suele haber ningún problema. Yo no lo he tenido.

Ahora nos vamos a dividir en dos, como el vizconde ese. Vamos a por Xamarin porque es lo más fácil de instalar. Entramos en el sitio Web y nos bajamos el instalador, lo ejecutamos y seguimos los pasos.

Punto pelota. O no. En principio, si los servidores de Xamarin están bien (que no siempre lo están), podremos lanzar Xamarin Studio y crearnos un proyecto de ejemplo para iOS y otro para Android.

Xamarin trae ya dos emuladores de Android listos para funcionar, pero que no son compatibles con Xamarin.Forms.

Si todo va bien, no tenemos que salir del IDE para crear/configurar nada. Incluso instalar nuevas imágenes de emuladores. Dentro del menú Herramientas está todo.

Os cuento un secreto: ni en el iMac ni en el MacBook Pro he conseguido que Xamarin me lance una aplicación Xamarin.Forms en iOS porque se niega a activar la versión demo, y en Android después de los sudores de activar la demo… me encuentro con que me sigue pidiendo activar porque ahora usa código nativo y necesito una licencia superior.

Una mierda, vamos. De todos modos intentaré conseguir que funcione aunque de hecho no tengo nada claro que esto sirva para nada más que como juguete y para enseñar a tu mamá que has podido instalarlo todo, porque si ya la evaluación cuesta tanto de instalar y de que funcione…

Otro problema: Xamarin.Forms sólo funciona con Android 4.0.3, con lo que dejas fuera a todos los sistemas anteriores, que todavía quedan unos cuantos.

Desarrollar con Xamarin para versiones anteriores de iOS y Android solo diferencia el desarrollo en que el lenguaje de programación es C# en lugar de Java o de Objective-C, porque tienes que conocer ambas APIs al dedillo.

Además, las malas lenguas comentan que el IDE se cae cada dos por tres, aunque parece que el resultado final es más que correcto y la apariencia de las aplicaciones en nativa.

Lo que sí tengo claro es que el lanzamiento inicial de una aplicación en un emulador de Android tarda infinito y un poco más porque instala cien mil cosas. En iOS ignoro lo que tarda porque no he sido capaz de lanzar nada desde Xamarin por el problema de las licencias.

QT es tu amigo. Instalar QT es tan fácil como Xamarin. Hacer que funcione, una vez has resuelto todos los problemas de configuración, también. Otra cosa es que eso de C++ y los Signals/Slots te echen para atrás.

Vale. Nos bajamos el instalador Open Source (http://www.qt.io/download-open-source/) y lanzamos el instalador.

Si queremos tener soporte para emuladores nativos (y rápidos), tenemos que añadir la opción de “android-x86” a la hora de instalar, y como ya hemos añadido una carpeta QT, el instalador protestará con que no está vacía. Ignorémoslo.

¿Lo has instalado ya? ¿En cuántos reintentos? ¿No se te ha cortado la descarga y has tenido que volverlo a iniciar? Suerte tuya.

Ya está instalado. Ahora lanzas Qt Creator y pulsas CMD-, para entrar en la configuración.

Te vas a la pestaña de Android y pones las rutas que faltan. Dos de ellas (el NDK y Ant) son fáciles de poner porque las hemos puesto dentro de QT y sólo tenemos que apuntar a ellas, pero ¿dónde está el SDK de Android, eh?

¿Cómo entro a una carpeta oculta desde en Finder? No se puede sin tocar las tripas de OS X, por lo que hay que meterla a pelo:

/Users/<tu_usuario>/Library/Android/sdk

Cuando hagamos eso se nos abrirá la ventana hacia abajo y veremos qué contiene ese Android SDK. También tenemos un botón para lanzar el “AVD Manager”, que es como se llama al gestor de emuladores.

Listo para sentencia. Una vez configurado eso, podemos crear un proyecto de tipo QtQuick y correrá en Android e iOS. Así de fácil y así de difícil.

El mayor problema con QT es que los controles no son nativos. QT Quick en Android funciona más o menos bien, pero en iOS se nota que la aplicación no está hecha en Objective-C o Swift. Aparte de que necesita un runtime llamado Ministro que en iOS se integra dentro del “bundle” pero en Android va aparte y se instala de forma externa (y creo que visible). Eso y la huella de la aplicación, que suele ser de varios megas (igual que con Xamarin).

En ambos casos el tiempo de carga suele ser algo superior al de una aplicación nativa. En Android casi no tiene importancia porque la mayoría de aplicaciones cargan lento, pero en iOS se nota bastante.

Según internet, el rendimiento suele ser equiparable al de una aplicación nativa.

Finalmente, una cosa que no os he contado es que Xamarin instala las cosas en un sitio, mientras que Android Studio y QT en otro, pero en su momento tampoco conseguí que me funcionara Xamarin/QT sin instalar el SDK de Android y Android Studio, así que algo habrá que no se instala por defecto y que se comparte entre ellos.

Una de las cosas raras que pasan, es que los emuladores de Xamarin se ven en Android Studio y viceversa, pero no son compatibles entre sí, lo que es un mal menor.

No he probado a configurar Xamarin para que apunte a los SDK originales y no los modificados, y no creo que valga la pena y tampoco creo que funcione.

Por RFOG | 7 Comentarios | Enlaza esta entrada
contacto@wintablet.info tema WinTablet.info por Ángel García (Hal9000)