Credit image

¿Te gusta el diseño web? ¡Echa un vistazo a la documentación de LenguajeCSS.com!

Conferencia: Entendiendo Android

Explicación de la conferencia Entendiendo Android, impartida en la pasada Tenerife LAN Party 2k11.

En la pasada Tenerife LAN Party impartí una conferencia de introducción al sistema operativo de Google, titulada Entendiendo Android, y dirigida a todos aquellos que quisieran empezar, especialmente desarrolladores nóveles. La conferencia fue impartida gracias al Cabildo de Tenerife y a Innova7.

He decidido realizar (fuera de programa) un artículo explicativo donde comentar las líneas generales, ya que aunque el PDF Entendiendo Android versión TLP2k11 puede verse en SlideShare (y tiene algunos detalles más), sin una guía puede resultar algo más tedioso de seguir.

.

La conferencia se inició con una parte de introducción muy básica para orientar a los más neófitos, una descripción del sistema y sus características, y poco a poco entrar en temas más técnicos de desarrollo o publicación, finalizando con un rápido repaso del panel de desarrollador del Market.

Android está repleto de cientos de términos y conceptos técnicos (Pueden haber facilmente más de 9000...), así que para comenzar con la introducción, se definieron 3 niveles imaginarios en las que se utilizaron sus siglas: HAL.

  • Hardware: Los componentes físicos del dispositivo.
  • Android: La base del dispositivo: El sistema operativo.
  • Launcher: Interfaz gráfica con la que manejamos el dispositivo.

Nivel 1: Hardware

El hardware es la parte física del dispositivo. En Android es muy importante conocer las características del dispositivo a adquirir. Pero es aún más importante tener una lista de prioridades altas (procesador, memoria RAM, tamaño de la pantalla, etc...) y una lista de prioridades bajas (resolución de la cámara, mAh de la batería, marca...).

Esta lista será muy subjetiva. Existirán personas que utilicen muy frecuentemente su cámara porque son fotógrafos, viajan frecuentemente o la utilizan mucho (prioridad alta) y personas que apenas ni la usen (prioridad baja).

Nivel 2: Android

Un error muy extendido (al menos entre iniciados) es el de ver Android como un dispositivo móvil, y no como lo que es: un sistema operativo (y de código abierto). Cualquier empresa puede crear un móvil y utilizar Android en él. Pasa al contrario, por ejemplo, con iPhone, que si es un dispositivo móvil (su sistema operativo es iOS, y es propiedad de Apple).

Al ser un sistema operativo, cada dispositivo Android dispondrá de una versión concreta instalada (de forma análoga a, por ejemplo Windows con Win98, WinXP, Win7...) con características añadidas respecto a su versión previa. Estas distintas versiones las veremos más adelante.

La versión de Android de un dispositivo puede ser actualizada a una versión posterior. Para ello, el fabricante u operadora debe poner a disposición de sus usuarios la actualización correspondiente. Incluso miembros de la comunidad de un dispositivo suelen crear actualizaciones no oficiales.

Un problema que se extendió bastante en el pasado, es que las compañías lanzaban un terminal móvil y luego se "olvidaban" de actualizar la versión de Android de ese dispositivo (potenciando así la compra de un nuevo móvil). Para solucionar esto, Google ha hecho firmar un acuerdo con distintas compañías para comprometerse a mantener actualizado el dispositivo al menos durante sus primeros 18 meses.

Las actualizaciones se realizan mediante un sistema llamado OTA (Over the Air), que permite actualizar el dispositivo automáticamente vía 3G o WiFi, sin necesidad de cables, software o procesos manuales.

Pero lo realmente interesante de Android es tener en cuenta que se trata de un sistema pensado para ser aplicable a practicamente cualquier dispositivo. Algunos ejemplos podrían ser el kit de manos libres para el coche Parrot Asteroid, el televisor Sony Google TV o... ¡Hasta unas gafas de esquí de Recon Instruments!

De hecho, la idea de Google es presentar antes de finales de año las primeras adaptaciones a sistemas de domótica (controlar la temperatura de casa, encender o apagar luces remotamente, encender la lavadora, desactivar o activar alarmas, etc...)

Nivel 3: Launcher

El Launcher es la apariencia del «escritorio» del móvil, el entorno donde trabajamos. La pantalla principal (donde colocamos iconos o widgets), la lista de aplicaciones del móvil (app drawer), etc...

En realidad, sólo se trata de una aplicación más, y puede ser reemplazada por cualquier otro Launcher. Un error muy común en usuarios sin conocimientos es elegir un dispositivo Android por su launcher. ¡Nunca hacer esto! Siempre podrás cambiar este interfaz posteriormente.

Cada compañía suele desarrollar un Launcher diferente para diferenciarse de la competencia, pero pueden reemplazarse por cualquier otro.

Si quieres más información, echa un vistazo a 11 launchers gratuitos para Android.

La diversidad de modelos existentes de dispositivos Android puede llevarnos a confusión y no saber cuál es el mejor. Sin embargo, lo que hay que entender es que no hay que buscar «el mejor móvil», sino el móvil que se adapte mejor a nuestras necesidades y prioridades.

Ahora la pregunta es... ¿En qué características debo fijarme? ¿Cuál es mejor?

Procesador

El primer punto (quizás el más importante) es el procesador o CPU del dispositivo. Este procesador principal es el que determinará la velocidad con la que actue.

Además, existe un procesador gráfico auxiliar llamado GPU que se encarga de las operaciones relacionadas con los gráficos (y así liberando de cierta carga al procesador principal). Ciertos dispositivos como HTC Tatoo o HTC Wildfire carecen de este procesador gráfico.

Puedes consultar en la página de Qualcomm estas y otras características relacionadas.

Memoria

En Android existen tres tipos de memoria (de más rápida a más lenta):

Memoria RAM

Se trata del tipo de memoria más rápida del dispositivo. Es memoria temporal y no se utiliza para almacenamiento, sino para tareas rápidas y aplicaciones en uso.

Disponer de muy poca RAM, como en la HTC Magic, es algo que repercute de forma importante en el rendimiento del dispositivo, que debe finalizar aplicaciones para cargar otras cuando las necesite.

Memoria interna

También llamada memoria NAND o MTD (o incorrectamente, ROM) es el equivalente al disco duro de nuestro dispositivo.

Aquí se guardará la versión actual del sistema operativo, el sistema de recuperación de Android, los diferentes logos o imágenes de arranque, las aplicaciones, etc...

Un detalle muy importante, es que los fabricantes mencionaban la capacidad total de la memoria interna del dispositivo (y no el espacio libre), y algunos dispositivos como el Samsung Galaxy 3 con poco espacio libre en la memoria interna, no tenían demasiado espacio para aplicaciones.

Veremos detenidamente este punto más adelante.

Memoria externa

La denominada memoria externa o memoria SD (también incorrectamente, ya que son tarjetas microSDHC) es el tipo de memoria más lento de los tres, y se utiliza principalmente para almacenamiento de archivos de gran tamaño y de uso poco frecuente (fotografías, archivos MP3, vídeos, etc...).

Cabe destacar dos tipos de características dentro de las tarjetas de memoria microSDHC:

  • Capacidad: El tamaño total de la memoria (8GB, 16GB, 32GB...).
  • Velocidad: El rendimiento en cuanto a velocidad. Cada clase representa la velocidad de transferencia mínima garantizada (MicroSDHC Class 2: 2MB/s).

Si tienes o has tenido problemas con las tarjetas MicroSD, el artículo Android: Tarjeta SD dañada puede servirte de ayuda.

Estructura de la memoria interna

Aunque la estructura de la memoria interna depende de cada fabricante (la especificada en este artículo es de una HTC Magic), la memoria se divide en varias particiones entre las que se encuentran una partición de arranque, un recovery (menú de recuperación de errores), una partición de caché y, sobretodo las dos más importantes: la partición de sistema y la partición de datos de usuario.

Partición /system

En la partición de sistema se guarda información del sistema operativo, como fuentes (tipos de letra), aplicaciones del sistema (las primarias y oficiales de Google), sonidos de notificaciones y alarmas o el framework (entorno y ventanas gráficas) del sistema operativo.

Partición /userdata

En la partición de datos del usuario se guarda la información relacionada al mismo, como registros de errores de programas (en una carpeta llamada «lápidas»), información local, el caché de la máquina virtual Dalvik o las aplicaciones descargadas del market, así como la información asociada a cada aplicación del dispositivo.

Como dato curioso, estas particiones utilizan un sistema de ficheros llamado YAFFS, aunque en versiones superiores a Android 2.3 ha sido reemplazado por Ext4.

Otras herramientas útiles de sistema son ADB: Android Debug Bridge o el SDK de Android o la utilidad DDMS.

Task-Killer

Quizás, uno de los errores más frecuentes en Android es el de considerar el uso de un task-killer (o administrador de tareas) para liberar memoria y conseguir mayor velocidad.

Esto se debe a que la mayoría de las personas asocian un modelo antiguamente utilizado, y desconocen que los sistemas operativos actuales siguen la máxima «Memoria RAM no utilizada, memoria RAM desperdiciada», ya que Android se encarga de cerrar y abrir las aplicaciones dependiendo de la necesidad de RAM del sistema, manteniendo abiertas las aplicaciones más utilizadas para mayor eficiencia.

Tienes información más detallada acerca de los problemas al utilizar un task-killer en el primer punto del artículo Optimizar Android: Velocidad y batería.

Versiones de Android

Como mencionamos anteriormente, Android tiene diferentes versiones que han sido lanzadas a lo largo del tiempo. Cada versión posterior, incluye sobre las anteriores muchas novedades y características interesantes.

Las versiones de Android actuales para móviles son las siguientes:

  • Cupcake (Abril 2009)
  • Donut (Septiembre 2009)
  • Eclair (Enero 2010)
  • Froyo (Junio 2010)
  • Gingerbread (Diciembre 2010)

Quizás, el salto más importante se efectua en Froyo (versión 2.2) donde, entre otras cosas, se introducen dos funcionalidades importantes:

  • Mover apps a la tarjeta SD: En versiones anteriores de Android, las aplicaciones sólo podían guardarse en la memoria interna del teléfono. Así pues, en dispositivos con memoria interna muy escasa, sólo era posible instalar un número de aplicaciones limitado.
  • Compilador JIT: Se introduce una mejora considerable denominada JIT (Just in Time), que acelera en gran medida la ejecución de las aplicaciones.

Por otro lado, existen otras versiones más específicas:

  • Honeycomb: Esta versión de Android esta orientada a tablets y se incluye en dispositivos como Motorola Xoom.
  • Ice Cream: Futura versión de Android que mezclará Gingerbread (rama de dispositivos móviles) y Honeycomb (rama de tablets) en una misma versión.

Fragmentación

El polémico tema de la fragmentación en Android ha disminuido durante los últimos años. No es de extrañar, ya que la cantidad de terminales con versiones antiguas a principios del año 2010 (y anteriores) era bastante pronunciada.

Sin embargo, esta fragmentación se ha visto reducida en la actualidad hasta un punto que ya no representa un problema (al menos no distinto del que ocurre en otras plataformas).

En Platform versions, de Developer Android pueden verse gráficos actualizados que muestran la evolución de la fragmentación en Android (tanto en versiones, como en resolución de pantalla o versión de OpenGL).

Ciclo de vida

Entrando un poco en el apartado de desarrollo, el ciclo de vida de una actividad en Android es uno de los conceptos básicos que debe aprender un programador.

Una aplicación al ser iniciada, pasa por los siguientes estados:

  • onCreate: La actividad se crea.
  • onStart: La actividad se inicia (mostrar interfaz).
  • onResume: La continua la actividad (tareas «pesadas»).
  • onPause: Se pausa la actividad.
  • onStop: Se detiene la actividad.
  • onDestroy: Se destruye la actividad.
  • onRestart: Se vuelve a iniciar una actividad detenida previamente.

Destacar que las tareas «pesadas» (obtener información por Internet, por ejemplo, que puede llegar a tardar bastante) deberían realizarse en el estado onResume, mientras que en onStart debería presentarse la interfaz y una posible ventana de carga. En caso contrario, podría iniciarse la aplicación y mostrarse una pantalla negra durante varios segundos, error común en desarrolladores inexpertos.

Otro error muy frecuente es olvidarse de liberar los recursos de hardware, lo que puede hacer que la batería se consuma muy rapidamente. Fuente: Diapositiva 10 de Android Power Save de SonyDeveloper.

Tipos de errores

Existen dos tipos de errores muy frecuentes en Android, que el usuario debe conocer bien:

FC

Los FC (Fuerce cierre) ocurren cuando se llega a un error en el código del programa. En las últimas versiones de Android también se permite enviar un informe del problema al desarrollador de la aplicación (mediante Market).

ANR

Los ANR (App no responde) pueden ocurrir porque la aplicación se ha quedado en un bucle infinito (una operación que nunca terminará) o, simplemente está tardando demasiado tiempo en terminar un proceso (sería conveniente optimizarlo).

Objetivos

En general, los consejos al desarrollar una aplicación de Android se resumen en cuatro:

  • Accesibilidad: Que sea cómoda, intuitiva y fácil de utilizar.
  • Rendimiento: Que no tarde demasiado en cargar.
  • Respuesta: Que no provoque errores y cuelgues.
  • Integridad: Asume siempre el peor caso y optimiza.

Aplicación .APK

Una aplicación de Android es un fichero con extensión .APK. En realidad, esto no es más que un fichero comprimido .ZIP renombrado, con una cierta estructura general.

Entre sus componentes, probablemente el fichero más importante es el AndroidManifest.xml, donde se especifican detalles como la versión de Android en las que funcionará esa aplicación, los permisos que necesitará, las resoluciones que podrán mostrar las diferentes pantallas de la aplicación, etc...

Otro de los componentes más importantes, es la carpeta res (resources), donde se guardan ciertos recursos:

  • drawable: Imágenes a utilizar en la aplicación. Puede llevar el sufijo -ldpi, -mdpi o -hdpi si se quiere distinguir dependiendo de la resolución de pantalla.
  • layout: Ficheros .xml con información acerca de la interfaz de las actividades (botones, pestañas, textos, imágenes...)
  • raw: Sonidos o música.
  • xml: Opciones o información concreta en formato .xml.
  • values: Cadenas de texto (frases) utilizadas en la aplicación en un idioma específico. Esto facilita muchísimo la traducción a otros idiomas sin tener que tocar en absoluto el código de la aplicación.

Si quieres más información sobre Android, te aconsejo echar un vistazo a esta infografía de Android.

Market

Por último, debemos saber que el Android Market es una plataforma donde los usuarios pueden descargar aplicaciones (gratuitas o de pago). Actualmente están preparando el lanzamiento de una nueva versión del Market que además de aplicaciones, permitirá descargar películas, libros, etc...

Como desarrolladores, mediante el pago de una tasa de aproximadamente 18 euros, podemos darnos de alta como desarrolladores y subir nuestras aplicaciones a la plataforma mediante un panel de Publisher.

En el panel dispondremos de múltiples datos e información interesante:

  • Información sobre nuestras aplicaciones: Número de descargas, usuarios que tienen instalada la aplicación...
  • Información para usuarios potenciales de nuestra aplicación: capturas de pantalla, descripción en varios idiomas...
  • Estadísticas: versiones de android, modelo de dispositivo, país...
  • Comentarios: En diferentes idiomas (en el Market sólo aparecen en nuestro idioma)
  • Votos: Número de estrellas.
  • Informes y registros de error: Mensajes del usuario, líneas donde ocurre el error, etc...

Escrito por Manz, el , en android. Comentarios recibidos: 16.

16 comentarios de lectores
Maxwell
Maxwell
1

Que pasada de entrada, sigue así maestro!

One
One
2

Muy buen aporte. Me lo guardo en favoritos pero ya. Enhorabuena por la conferencia y este pedazo de artículo.

Dani que??
Dani que??
3

Me parece un trabajo brillante. Te felicito tanto por la conferencia, como por esta entrada. Fantástica. Enhorabuena. Muchos te animamos a que sigas publicando los entresijos de este SO. por cierto Feliz año!!

José Tomás
José Tomás
4

Notable!

dDiazLara
dDiazLara
5

Aquí posteado está genial, pero haber visto la ponencia lo supera con creces. Ágil, dinámica y amena, son sólo algunos de los adjetivos que se le pueden dar. Enhorabuena de nuevo. Saludos.

DaniFP
DaniFP
6

¡Un artículo fabuloso! Y lo es más complementado con el resto de artículos del blog acerca de Android.

Aplatanado
Aplatanado
7

Precisamente hoy tuve un rato para ver la presentación en slidshare. La verdad es que es muy interesante y la he dejado como referencia.

Alejandro HG
Alejandro HG
8

Me había perdido la conferencia y me había quedado con las ganas. Enhorabuena por el post, está insuperable!!

Samuel
Samuel
9

Hola, Me ha gustado mucho la entrada a este blog haciendo una introducción muy buena a los que quieran familiarizarse con Android. Saludos, itprofessional.eu

truko
truko
10

Muy interesante, muy completa la información, muchas gracias u.u

Martín
Martín
11

Lo admito, Scrolleé hasta abajo para ver los comentarios, y paré en la parte de los memes. PD: Muy interesante el artículo :Yaoming:

Ibán
Ibán
12

Lo mas currado que he visto sobre android fácil de entender

El enmas-carado
El enmas-carado
13

Precioso artículo. Soy un lector de tu blog de hace rato, y me encantan esta clase de artículos donde explicas temas complicados para acercarse por primera vez de una manera fácil. El diseño del blog roza lo perfecto, felicitaciones y continua de este modo.

Diego
Diego
14

He encontrado muy buena esta conferencia, ya que estamos en este mundo donde las comunicaciones son tan importantes, debemos saber explotarlas al máximo. En general es así en la informática también, tanto en España, como en Estados Unidos y en el Mundo.

elgabriel
elgabriel
15

Pfff! Perfecto el artículo, no se explica mas claro en ningún otro lugar! :D:D

Marcel Colson
Marcel Colson
16

Excelente amigo.. Gracias por tu aporte al conocimiento.

Publica tu opinión

Si lo deseas, puedes utilizar el siguiente formulario para publicar tu opinión o responder a alguna de las existentes:

Previsualización

Aquí se previsualizará su comentario. Revise que sea correcto antes de publicarlo.