Oct 31, 2011

Si mañana fueses a empezar a desarrollar para Android, aquí tienes todo lo que vas a necesitar

Comenzar algo nuevo siempre es difícil, y ya más de uno me ha preguntado por donde empezar. El empujón inicial siempre es el más complicado, pero si tenemos las herramientas e instrucciones adecuadas, ayudamos que el salto sea mucho más corto.

A continuación viene una guía para ayudar a todos aquellos que pretendan comenzar a desarrollar para Android. Los pasos son más o menos basados en mi propia experiencia de hace poco más de un año. Si alguien tiene algún detalle importante que quisiese incluir en el listado, puede dejar un comentario y yo me encargaré de actualizar el post con el contenido.

Primero que nada, ¿cuál sistema operativo?

Por suerte Windows, Mac OS X, y Linux sirven perfectamente. Particularmente yo he utilizado Mac OS X y Windows para desarrollar para Android. Prefiero Mac OS X ya que para hacer las pruebas con un dispositivo móvil real, no hay que ponerse a cazar los drivers en los diferentes sitios de los proveedores del teléfono. En Mac, los devices son automáticamente detectados (y ya he probado con unos cuantos teléfonos), pero en Windows hay que instalar drivers para todos.

Nunca he programado para Android en Linux, así que no puedo opinar realmente como es la experiencia. De todos modos, sea cual sea, puedo asegurarles que funciona perfectamente como en el resto.

Aquí van los requerimientos más detallados:
  • Windows XP (32bit), Vista (32 o 64bit), o Windows 7 (32 o 64bit) 
  • Mac OS X 10.5.8 o superior
  • Linux (probado en Ubuntu Linux, Lucid Lynx) 
    • GNU C Library (glibc) 2.7 o superior es requerida. 
    • Para Ubuntu Linux, la versión 8.04 o superior es requerida. 
Ahora las herramientas

Lo primero de todo es instalar el Java Development Kit (JDK) de Sun Oracle. En estos momentos, la última version es la 7u1, pero Android solamente permite trabajar con la versión 6. Hasta que esto cambie, cualquiera de las dos versiones hará el trabajo. Del mismo modo, Android soporta la versión 5 del JDK, pero para los que tienen la opción, les recomiendo la 6 para poder utilizar las mejoras en el lenguajes introducidas con esa versión.

Ya que tenemos el JDK, es turno para el IDE. Cualquier editor de Java corriente sirve perfectamente para la tarea, pero Eclipse es el recomendado (Yay!) ya que el equipo de Android ha desarrollado todas las herramientas pensando en Eclipse. La versión 3.5 (Galileo) o superior es requerida.

El siguiente paso es instalar el SDK de Android. Para esto no hay mucha ciencia: se va al sitio (link anterior) y se descarga la última versión en la página. Se siguen las instrucciones y listo. Un consejo importante para los enamorados de Windows: instalen el SDK en un folder que no contenga espacios. El famoso "C:\Program Files\..." no es una buena opción ya que el espacio intermedio luego les dará problemas.

Ahora podremos instalar el plugin de Eclipse para Android llamado Android Development Tools (ADT). Gracias a este señor no puedo recomendar otro IDE que no sea Eclipse, ya que el plugin nos hará la vida muy simple y solamente existe para Eclipse. Para instalarlo, pueden encontrar las instrucciones en esta página.

Por último (wow! that was hard), tendremos que instalar las plataformas de Android para las que pretendemos desarrollar (más sobre las diferentes plataformas a continuación). Esto lo podemos hacer utilizando una herramienta llamada "Android SDK and AVD Manager" y que podemos acceder a ella desde Eclipse yendo a Windows > Android SDK and AVD Manager en el menú. En la ventana que aparecerá, podemos seleccionar todo lo que deseemos instalar y seguir las instrucciones para completar el proceso. Para más información sobre este tema, ver "Step 4. Adding Platforms and Other Components" en la guía oficial para la instalación del SDK de Android.

¿Qué diablos son las famosas "plataformas" de Android?

Ya está todo lo que necesitamos instalado, así que es el momento de preguntarnos por los dichosos Android Platforms. Si ya vieron el listado de plataformas en el Android SDK and AVD Manager, se habrán dado cuenta que hay un montón de versiones diferentes, y si ustedes son como yo, me imagino que la tentación de bajar solamente la última versión haya sido suficiente para pensar que esto es cosa bien simple.

Pero no, por desgracia no.

Las plataformas de Android se refieren a la versión del sistema operativo que se instala en cada teléfono. Google decidió nombrar cada una de estas versiones como un postre (sí, de los de dulce), así que es posible que ya hayan oído mentar a Cupcake (versión 1.5), Donut (1.6), Eclair (2.0 / 2.1), Froyo (2.2), Gingerbread (2.3), Honeycomb (3.0 / 3.1 / 3.2), y Ice Cream Sandwich (4.0). Esta última acabada de salir aunque el primer dispositivo que la va a utilizar no sale hasta noviembre.

Obviamente, diferentes teléfonos (o tablets) utilizan diferentes versiones de Android. La fragmentación del sistema operativo es bien importante a tener en cuenta, así que hay que ser muy cuidadosos a la hora de decidir para qué versión vamos a desarrollar. Mientras más nueva sea la versión, mayores posibilidades tendremos de aprovechar los recursos que nos brindan los dispositivos, pero menos dispositivos podrán utilizar nuestras aplicación. Mientras más vieja sea la versión, más usuarios potenciales, pero menos poder en las cosas que podremos desarrollar.

A partir de la información que aparece en esta página (actualizada con regularidad y cuyos datos a día de hoy son del 4 de Octubre pasado), podemos ver que si desarrollamos una aplicación para Gingerbread (2.3 API Level 10), solamente podremos acceder a un 40% del mercado (38.2% específico de Gingerbread más un 1.8% de Honeycomb). Si lo hacemos para Froyo (2.2), el por ciento que alcanzaremos será del 85.8%, y si lo hacemos para Eclair (2.1), el número se elevará hasta un 97.5%. Para los que están confundidos con estos números, recuerden que cada versión soporta todas las aplicaciones desarrolladas para versiones anteriores.

Visto esto, seleccionar la plataforma de Android para la que vamos a desarrollar nuestra aplicación requiere un compromiso específico de funcionalidad versus por ciento de mercado. En los casos donde una versión específica es obligatoriamente requerida para el desarrollo de determinada funcionalidad, la  forma más elegante de proceder, es brindar un fallback para versiones anteriores, de modo que los menos agraciados puedan disfrutar al menos parcialmente de la aplicación. El cómo desarrollar aplicaciones para soportar varias versiones de Android a la vez es un tema más complicado del que posiblemente hable más en un futuro. Para los que no pueden esperar, aquí está un buen comienzo: Android Compatibility.

Ya están los elementos técnicos, ahora hace falta un poco de teoría

Con todo instalado, solo queda aprender qué hacer y cómo hacerlo. En este aspecto todo el mundo tiene sus preferencias, así que voy a tratar de cumplir con los más exigentes.

Para los amantes de los libros de papel con letricas de imprenta, les recomiendo los siguientes ejemplares:
  1. Professional Android 2 Application Development (Wrox Programmer to Programmer)
  2. Pro Android 3
  3. The Android Developer's Cookbook: Building Applications with the Android SDK (Developer's Library)
Si el objetivo que persiguen es desarrollar juegos, es posible que los dos siguientes sean un mejor comienzo:
  1. Beginning Android Games
  2. Pro Android Games (Books for Professionals by Professionals)
Para aquellos que prefieren recursos gratuitos en Internet, aquí está mi listado favorito:
  1. El sitio oficial para desarrolladores de Android, a partir del cual pueden acceder a toda la documentación disponible, artículos y demás recursos.
  2. El blog oficial de desarrollo para Android, escrito por los desarrolladores de Google que trabajan en la plataforma.
  3. Android UI Design Patterns, un blog escrito por Juhani Lehtimaeki, un desarrollador que enfoca sus artículos en usabilidad y buenas prácticas para la creación de interfaces en Android.
  4. Styling Android, un blog escrito por Mark Allison, un desarrollador que ha recopilado muy buena información sobre aplicar estilos en aplicaciones Android.
  5. Android Patterns, un sitio con una muy buena colección de patrones de interacción. Se los recomiendo a todos como un punto de referencia indispensable para entender cómo llevar a cabo diferentes actividades en Android.
Y por último, para los amantes de Twitter, aquí les van algunas personas/cuentas relacionadas con Android de las que se puede obtener muy buena información:
  1. Richard Hyndman
  2. Roman Nurik
  3. Reto Meier
  4. Rubén González Muñoz
  5. Juhani Lehtimaeki
  6. Android. Cuenta oficial de Android en Twitter.
Para los que aún no tienen idea de qué hostia es Twitter, y piensan que hay mejores formas de perder el tiempo, les pongo aquí un ejemplo de cómo puede ser útil, precisamente cuando uno se traba trabajando con Android.

Para terminar, unas palabras de aliento

No es difícil. Para los que nunca han hecho nada con Java, no se asusten, esto no es J2EE y sus tres mil millones de temas complicados. Las personas me han dicho frecuentemente, "el problema es el Java ese socio..." y los entiendo, pero esto es diferente. El Java como lenguaje no es complejo, y el Android particularmente es muy divertido para trabajar.

Los que vienen del mundo de C# van a encontrar Android muy simple de trabajar. Después que se acostumbren a las particularidades y diferencias de Eclipse con respecto al Visual Studio .NET, verán que no es complicado para nada. 

Yo se los recomiendo sinceramente.

Disclaimer: por comprar cualquiera de los libros que menciono en este sitio, yo personalmente gano una comisión por cada venta. Esto no quiere decir que haya puesto los libros por el mero hecho de ganar dinero, sino por que considero que son de los mejores que se han publicado sobre el tema.

Last but not least:

Aquí les va un listado con 5 variantes para monetizar nuestras aplicaciones en Android. Money, it's always about money, right?

2 comments:

  1. Este es el tipo de post q deberiamos hacer todos. Thanks for make it easier for us "the new comers" :)

    ReplyDelete
  2. yudielgc11/24/2011

    Great chama, casi sin tiempo en las últimas semanas había dejado este tema de lado. Gracias a este post lo vuelvo a retomar, muy bueno de punta a cabo.

    ReplyDelete

Note: Only a member of this blog may post a comment.