Aprende programación






10 ene. 2011

Primeras impresiones de Android SDK

Buenas,

Este año he empezado con fuerza y he iniciado a aprender Android. El objetivo será desarrollar algunos juegos y subirlos al Market (algunos gratuitos y otros a unos 50 centimos). Ya anteriormente había intentado hacer algo y las herramientas las conocía, pero siempre se había quedado atrás por falta de tiempo. En esta ocasión va en serio, es un objetivo prioritario.

Para instalación tan solo hay que seguir los pasos que están explicados.
  • Descargas Eclipse
  • Descargas el SDK de Android y lo instalas
  • Instalas el plugin de Eclipse y lo configuras
Y con todo ello ya puedes hacer tu primer "hola mundo". También puedes probar alguna demo si quieres.

Hasta aquí todo normal hasta que empiezo a ver inconvenientes.

Inconvenientes:

Memoria.
Lo primero de todo, al ser emulado traga multitud de memoria. Está bién que el dispositivo emule bién el dispositivo pero ¿no puede haber una versión ligera con las opciones mínimas?. Es increible como cuando llevas 30 minutos programando (o más bién desplegando) deja de funcionar el emulador, eclipse, etc. Esto os comento en Windows. Lo he probado también en un Linux Ubuntu 10.10 y funciona un poco mejor, en vez de caer a los 30 minutos cae a los 60. Pero sigue utilizando mucha memoria.

Lentitud de despliegue.
El primer despliegue es bastante lento pero una vez arrancado el emulador, cada vez que despliegas genera el paquete y lo sube al emulador. Lo cual significa que si tengo una aplicación con muchos resources, cada despliegue será eterno. Esto habría que mejorarlo. El sistema se parece un poco a los Ant de JEE que generan el paquete entero. Está bién tener un paquete generado que sea la aplicación, pero cuando estás desarrollando lo primordial es la velocidad de despliegue subiendo unicamente los cambios.

Depuración.
Al menos se puede depurar, pensé. En efecto, se puede depurar siempre y cuando no quieras cambiar el código al ver el error. Algo que es tremendamente util es la posibilidad de cambiar el código mientras se está ejecutando y que funcionen los cambios sin tener que volver a rearrancar y/o redesplegar la aplicación.

No hay console.
O al menos aún no la he encontrado. No puedo decir que no haya pues quizá no haya buscado adecuadamente pero esperaba que cuando pusiese System.out.println("Algo"); se visualizase en la consola del eclipse.

Modo horizontal y modo vertical.
Una característica de los nuevos móviles es la posibilidad de girar el movil. Este es interesante aunque pone complejidad en el desarrollo ya que quizá la distribución de los componentes sean diferentes. Tienes la posibilidad de desarrollar unicamente para una orientación si quieres. La pega que veo es que si quieres desarrollar para las dos orientaciones el emulador solo visualiza una por lo que si quieres volver a testear si funciona para la otra orientacion debes volver a lanzar otro emulador y volver a probar todo.

Ventajas:

Aun así, me gustaría comentar alguna ventaja que le he visto:
Gestión de resources muy bueno.
Está automatizado para que cargue imagenes de manera sencilla a través de una constante de una clase que se autogenera. Además tienes un directorio para poner diferentes imagenes según la orientación vertical-horizontal. Esto estaba interesante.

Doble buffer.
Al pintar en pantalla ya se dispone de un doble buffer. Aun no tengo claro como puedo provocar el repaint(), pero poco a poco me iré haciendo. Comentar que todos los juegos consistiran en cargar imagenes y moverlas en un canvas. No hay componentes prediseñados.

-------------
Y hasta aquí mis primeras impresiones. Es normal que al principio se vean más pegas que beneficios porque los trucos se van aprendiendo poco a poco. Yo que soy un maniático del desarrollo y despliegue rápido he visto bastantes inconvenientes pues he estado más tiempo desplegando que desarrollando.

Creo que para avanzar más rápido con Android habrá que crear un framework o API que permita ver mis aplicaciones en un JFrame y luego que el traspaso a Android sea cambiar dos cosas y vale. De esa forma, conseguimos la velocidad de desarrollo sencillo en un JFrame y luego lo podremos portar a algo más pesado.

En cuanto consiga algo, veré publicarlo con licencia LGPL para ver si se anima más gente.

Ya os iré contando.

11 comentarios:

  1. Yo también llevo unas semanas liado con Android, con el mismo objetivo de ver si acabo publicando algo en el market. La cosa es conseguir sacar tiempo!
    Una ayudita; lo que imprimes por pantalla lo puedes ver yéndote a la perspectiva DDMS, en la vista LogCat, en lugar de en la consola. A mí también me llevó unos días encontrarlo.

    ResponderEliminar
  2. Jorge, si tienes un teléfono o un tablet con Android quizá te venga mejor desplegar la aplicación directamente en el dispositivo. Conseguirlo es muy sencillo, si quieres te explico los pasos, y así no tienes que estar gastando recursos de la máquina en arrancar el emulador. Por otro lado así solucionas el problema del modo horizontal y vertical.

    Ánimo y saludos

    ResponderEliminar
  3. jVel, Muchas gracias por la ayuda. Lo buscaré.

    Raúl, es una idea interesante para liberar memoria y probar en vertical y horizontal pero añade varios problemas, el despliegue y como consecuencia la ejecución cada vez que iniciamos será más lenta, perdemos completamente la posibilidad de depurar la aplicación y perdemos ahora si el console (supongo esto último). Aun así probaría la idea si tuviese un terminal para ver la experiencia de desarrollar así y poder evaluarlo mejor.

    Gracias y saludos,

    ResponderEliminar
  4. ¿De cuánta memoria dispone?

    ResponderEliminar
  5. Buenas
    1Gb de RAM, no es que sea mucho (como los actuales que están en 4Gb) pero tampoco es poco.

    Cuando arranco el Android para que vaya algo más rápido pongo 256Mb asignado al AVG de Android.

    ResponderEliminar
  6. Yo instalé Eclipse, el SDK de Android y el plugin para Eclipse, le di a Window > Android SDK and AVD Manager y cuando quiero crear un nuevo AVD hay un mensaje abajo que dice "An Android Virtual Device that failed to load. Click 'Details' to see the error." Cuando lo creo finalmente y quiero probar un proyecto para Android, no me sale la opción para escoger "el target", aparece deshabilitada y no he podido crear nada. Uso Linux, si tiene algún consejo o ayuda se lo agradecería, muchas gracias =)

    ResponderEliminar
  7. Si claro. Previamente tienes que configurar la ruta del SDK, esto lo tienes en Preferencias>Android.

    Si quieres tienes un tutorial en video muy interesante (de hecho es una coleccion de videos muy interesantes ;) ) :
    http://www.youtube.com/watch?v=kZYWqL0kaAM

    Para el caso de Linux, como no hay installer, tienes este otro:
    http://www.youtube.com/watch?v=II3iQm0Ofvk

    Saludos, Jorge

    ResponderEliminar
  8. Bienvenido al mundo android!

    Aunque sea java, es un mundo muy distinto a la programación tradicional, pero es muy potente y engancha.

    Cuando lo domines un poco más, puedes echar tu curriculum en una empresa con wii ;)

    ResponderEliminar
  9. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  10. David, :) Ya me veo haciendo el top 10 de algo con la corbata en la cabeza :P

    ResponderEliminar
  11. Con Control+F11 puedes rotar la pantalla del emulador como si girases la pantalla del teléfono.

    ResponderEliminar