Primeras experiencias desarrollando para Android

Hace unas siete semanas que tengo un telefono con Android y hace cuatro que empecé a desarrollar aplicaciones para que corran en el telefono. Si desarrollás en Java y tenes cierta idea de aplicaciones desktop la curva de aprendizaje no es empinada.

La instalación del ambiente es simple (estoy usando Eclipse) y consiste en instalar el sdk, el plugin de eclipse y las plataformas necesarias (cada versión de Android es una plataforma). Ya viene integrado con httpclient y sqlite.

En estas semanas hice algunas pruebas:

  1. Ver el proceso de subir una app a Android Market.
  2. Iconos de las aplicaciones.
  3. Construir una app que necesite de una base de datos, ejecutar tareas en segundo plano, traer datos de servidores y aprender a crear una UI.
  4. Tests automáticos.

Para estas pruebas hice dos aplicaciones. La primera fue una prueba de concepto y sólo necesitaba que fuera bastante simple y que pudiera hacer rápido sin tener conocimiento del SDK. Lo que hace esta app es mostrar los sensores del teléfono (acelerómetro, sensor de luz, de proximidad, etc) y permite capturar los datos que provee cada uno. El resultado es Sensors Info. Pueden descargarla con:

Sensors Info

 

La segunda aplicación es Commonoid. Usa la API de Flickr para explorar las fotos del proyecto The Commons. Son fotos en el dominio público subidas por instituciones como museos, universidades, NASA, etc. La descarga es con:

Commonoid URL

Commonoid

 

1. Subir una app al market

No conocía nada del proceso para Android pero sabía que hay muchas quejas de desarrolladores de iOS en cuanto al store de Apple (por tiempos de espera una vez que se publica la aplicación, de los rechazos por parte de Apple y el costo inicial, unos US$99). ¿Sería igual el proceso en cuanto a Android? En comparación, la publicación para Android es muchísimo más facil.

Una vez que la aplicación está terminada, hay que ir a la página de publicación, pagar US$25 por única vez con Google Checkout y crear el release de la aplicación.

Eso es todo. La aplicación ya aparece en los listados del Android Market.

2. Iconos

Algo que no me di cuenta hasta el momento de publicar Sensors Info son los íconos de la aplicación (soy malísimo en la parte gráfica) y hay que crearlos en varias resoluciones dentro de la app (en general se necesitan versiones en 76×76, 48×48 y 36×36) y al subirlo al market hay que enviar una versión en 512×512. Cree unas imágenes a las apuradas y obtuve esto (que apesta):

Sensors Info

Sensors Info

Recién con la segunda aplicación que hice me encontré con Icon Design Guidelines que explica como deberían ser los íconos de las aplicaciones y da unos ejemplos para Photoshop para crear los propios. El resultado es el siguiente, que al menos para mí se ve mucho mejor que el anterior (los tres círculos son el log de The Commons, pero en un tono sepia):

Commonoid

Commonoid

 

3. Construir una app

Aca no hay mucho que decir, esta app me sirvió para aprender varios aspectos del SDK. Como acceso a una base de datos con SQLite, ejecutar tareas en segundo plano (usé AsyncTask), traer datos de servidores (con HttpClient), el ciclo de vida de las actividades, etc.

4. Tests automáticos

Android tiene varios paquetes para facilitar el uso de JUnit. Pero el emulador es leento y los tests corren en él. Es casi imposible hacer TDD de esta manera.

Lei en StackOverflow de gente que separa los tests en dos grupos, uno con el código que depende de Android (estos corren en el emulador) y otro grupo de tests que no dependen de Android y pueden correr en la JVM.

Aparte de la velocidad, lo que me interesaba era poder testear la GUI de las apps, en Commonoid tengos tests para el código que es usado por la UI pero no para la UI en sí misma.

Todavía no los use pero me encontré con dos proyectos que pueden facilitar la tarea, uno es Robotium, “El Selenium de Android” según los autores. Con el que se debería simplificar el testeo de la UI. A simple vista no veo si estos tests corren en el emulador o en la JVM. El otro proyecto es Robolectric, con el que podemos correr los tests sin necesidad del emulador, con lo que los tiempos bajarían bastante.

 

Me queda investigar estos dos proyectos y ver como hacer i18n en una app.

Categorías: Opinión

One comment

Leave a comment