sábado, 30 de agosto de 2014

Introducción a Android

Android nos proporciona un completo entorno de trabajo de desarrollo que nos ayudará en la elaboración de aplicaciones para dispositivos móviles. En la mayoría de los casos, utilizaremos Java como lenguaje de programación.

Las aplicaciones en Android se construyen mediante la combinación de distintos componentes que pueden ser invocados de manera individual. Por ejemplo, una actividad (Activity) puede mostrar una pantalla de la interfaz del usuario, mientras que un servicio (Service), y de manera independiente, puede realizar ciertas operaciones en segundo plano. Actividad y servicio son dos de los componentes Android que desarrollaremos en profundidad más adelante.

Desde un componente puedes invocar otro componente usando una intención (Intent). La intención funciona a modo de mensajero llevando cierta información entre componentes. Incluso podrás invocar un componente que se encuentre alojado en una aplicación distinta, como puede ser una actividad en una aplicación de mapas para visualizar una localización determinada. Esta manera de hacer las cosas nos da la posibilidad de establecer varios puntos de entrada en nuestra aplicación y hacerlos accesibles a otras aplicaciones.

Este funcionamiento, aparentemente sencillo, es tremendamente poderoso debido fundamentalmente a que nos permitirá reutilizar funcionalidades desarrolladas por terceros y de muy diversa índole. De esta manera no tendremos que reinventar la rueda implementado una funcionalidad previamente implementada.

Por otro lado, Android nos provee de las herramientas necesarias para poder definir recursos para dispositivos con múltiples configuraciones. Por ejemplo, puedes definir plantillas distintas para varios tamaños de pantalla y será el propio sistema el que determine qué plantilla mostrar al usuario en función del tamaño utilizado.

También podrás consultar si un dispositivo cuenta con alguna funcionalidad o característica concreta en tiempo de ejecución. Por ejemplo, nuestra aplicación podría usar la cámara del dispositivo opcionalmente si ésta está disponible, es decir, que nuestra aplicación podrá seguir funcionando sin ningún tipo de problema aunque el dispositivo no cuente con la cámara. Evidentemente, no todas las aplicaciones que hacen uso de la cámara del dispositivo pueden funcionar si ésta no existe. Para este último caso, Android nos permitirá declarar estos requisitos con antelación para que nuestra aplicación no llegue a ser instalada en un dispositivo no compatible.

Las herramientas del SDK de Android (Software Development Kit - Kit de Desarrollo de Software), compilan el código de tu aplicación dando como resultado final un APK (Android package - paquete Android). Este paquete Android, no es más que un archivo con la extensión .apk que contiene todo lo necesario para ser instalado en un dispositivo Android.

Cada aplicación Android cuenta con su propio entorno seguro y acotado de ejecución (sandbox):
  • El sistema operativo Android está basado en el sistema multi usuario Linux. Cada vez que instalamos una aplicación, Android creará el usuario asociado con el que se acabará ejecutando dicha aplicación.
  • Por defecto, el sistema asigna a cada aplicación un UID (un ID de usuario solo conocido por el sistema, no por la aplicación). Todos los archivos pertenecientes a una misma aplicación tendrán como propietario el UID asociado.
  • Cada proceso cuenta con su propia máquina virtual (MV), es decir, cada aplicación se ejecuta de manera aislada con respecto al resto de aplicaciones.
  • Por defecto, cada aplicación se ejecuta en su propio proceso. Android inicia este proceso, cuando cualquiera de los componentes de una aplicación es invocado. El proceso será finalizado cuando deje de ser utilizado o cuando el sistema necesite recuperar memoria para otras aplicaciones.

Android cumple con el principio de mínimo privilegio. Es decir, cada aplicación, por defecto, tiene acceso solo a los componentes que requiere para realizar su trabajo y ninguno más. Esto crea un entorno seguro en el que una aplicación no puede acceder a partes del sistema para las que no tiene permiso.

Sin embargo, existen formas en las que una aplicación puede compartir sus datos con otras aplicaciones y en las que una aplicación puede acceder a servicios del sistema:
  • Podemos hacer que dos aplicaciones compartan el mismo UID. En este caso, cada aplicación podrá acceder además de a sus propios archivos, a los archivos de la otra aplicación. Para compartir recursos del sistema, además de ejecutarse en el mismo proceso, deben compartir la misma MV (para esto último ambas aplicaciones tendrán que estar firmadas con el mismo certificado).
  • Una aplicación puede solicitar acceso a los datos de un dispositivo tales como los contactos del usuario, mensajes SMS, tarjeta SD, cámara, bluetooth, entre otros. Todos estos permisos deberán ser explícitamente declarados por el desarrollador y aprobados por el usuario durante el proceso de instalación.

No hay comentarios:

Publicar un comentario