Android es un sistema operativo basado en el kernel de Linux. Es un sistema operativo móvil anunciado por Google el 5 de noviembre de 2007. Fue desarrollado en sus inicios por Google y posteriormente por Open Handset Alliance. Adopta una arquitectura de pila de software (también conocida como pila de software) y se divide principalmente en tres partes. El kernel de Linux subyacente solo proporciona funciones básicas; cada empresa desarrolla otras aplicaciones de software y algunos programas están escritos en Java.
1. Introducción
Tanto BlackBerry como iPhone ofrecen plataformas móviles populares de alta capacidad, pero se dirigen a dos grupos de consumidores diferentes. BlackBerry es la mejor opción para los usuarios empresariales. Pero como dispositivo de consumo, no puede competir con el iPhone en términos de facilidad de uso y "novedad". Android es una plataforma joven y sin explotar que tiene el potencial de cubrir dos grupos diferentes de consumidores de teléfonos móviles al mismo tiempo, e incluso puede reducir la brecha entre el trabajo y el entretenimiento.
Hoy en día, muchos dispositivos basados en red o habilitados para red ejecutan algún tipo de kernel de Linux. Es una plataforma sólida: rentable en cuanto a implementación y soporte, y sirve como un buen enfoque de diseño para la implementación. La interfaz de usuario de estos dispositivos suele estar basada en HTML y se puede ver a través de un navegador de PC o Mac. Pero no todos los dispositivos necesitan ser controlados por un dispositivo informático normal. Piense en un electrodoméstico tradicional, como una estufa eléctrica, un microondas o una tostadora. ¿Qué pasaría si los electrodomésticos de tu hogar estuvieran controlados por Android y tuvieran una pantalla táctil a color? Si hay una interfaz de usuario de Android en la zona de cocción, el operador puede incluso cocinar algo.
2. Terminología de Android
El desarrollo de aplicaciones de Android en el entorno Eclipse requiere conocimiento del entorno Eclipse y de la plataforma Android. Comprender los siguientes términos le ayudará a desarrollar aplicaciones de Android utilizando complementos de Eclipse.
Open Handset Alliance
Se trata de una organización liderada por Google y compuesta por numerosas organizaciones públicas y privadas.
Android
Este es el producto estrella de Open Handset Alliance. Es un entorno operativo de código abierto para dispositivos móviles.
Emulador
Una herramienta de software que emula otro sistema; suele ser un entorno que se ejecuta en una computadora personal (IBM, Mac, Linux) que simula otro entorno, por ejemplo, dispositivos informáticos móviles.
Linux
Un núcleo de sistema operativo de código abierto utilizado por muchas plataformas informáticas, incluidos servidores, computadoras de escritorio, equipos de red y dispositivos informáticos móviles. Android se ejecuta en el kernel de Linux.
Dalvik Virtual Machine
Dalvik VM es un entorno operativo de la cartera de productos de Android que interpreta el código de la aplicación en tiempo de ejecución. Dalvik VM es similar a Java VM, pero las dos no son compatibles.
3. Una breve historia de Android
La plataforma Android es el resultado de la Open Handset Alliance, que está compuesta por un grupo de empresas que están comprometidas con la construcción de mejores teléfonos móviles. La organización está dirigida por Google e incluye operadores móviles, fabricantes de teléfonos móviles, fabricantes de componentes, proveedores de plataformas y soluciones de software y empresas de marketing. Desde una perspectiva de desarrollo de software, Android está en el centro del campo del código abierto.
El primer teléfono con Android en el mercado fue el G1, fabricado por HTC y suministrado por T-Mobile. El dispositivo tardó aproximadamente un año desde su concepción hasta su lanzamiento, y las únicas herramientas de desarrollo de software disponibles fueron algunas versiones de SDK que implementaron mejoras incrementales. A medida que se acerca la fecha de lanzamiento de G1, el equipo de Android lanzó el SDK V1.0 y también han aparecido aplicaciones para esta nueva plataforma.
Para fomentar la innovación, Google ha organizado dos "Desafíos para desarrolladores de Android", que ofrecen millones de dólares en recompensas por las participaciones ganadoras. Unos meses después del lanzamiento del G1, le siguió el lanzamiento del Android Market, que permitía a los usuarios buscar y descargar aplicaciones directamente a sus teléfonos. Después de unos 18 meses, una nueva plataforma móvil pasó a ser de dominio público.
4. Plataforma Android
La plataforma Android se denomina cartera de productos porque es una colección de componentes, que incluyen:
Operaciones basadas en el sistema kernel Linux. Conjunto de herramientas del entorno de programación Java, que incluye compilador, compilador de recursos, depurador y emulador. Dalvik VM se utiliza para ejecutar aplicaciones
Android es rico en funciones, por lo que es fácil confundirlo con los sistemas operativos de escritorio. Android es un entorno en capas construido sobre el kernel de Linux e incluye una rica funcionalidad. El subsistema de interfaz de usuario incluye:
Widgets de vistas de ventana que se utilizan para mostrar componentes comunes como cuadros de edición, listas y listas desplegables.
Android incluye un navegador integrable construido en WebKit, y el navegador Mobile Safari del iPhone también está basado en WebKit.
Android ofrece una variedad de opciones de conectividad, que incluyen WiFi, Bluetooth y transmisión inalámbrica de datos a través de conexiones celulares (como GPRS, EDGE y 3G). Una técnica popular en las aplicaciones de Android es vincular a Google Maps para mostrar direcciones dentro de la aplicación. La pila de software de Android también brinda soporte para servicios basados en ubicación (como GPS) y acelerómetros, aunque no todos los dispositivos Android están equipados con el hardware necesario. También hay soporte para cámara.
En el pasado, dos áreas en las que las aplicaciones móviles han tenido dificultades para igualar a las aplicaciones de escritorio han sido los gráficos/medios y los métodos de almacenamiento de datos. Android resuelve los desafíos gráficos al brindar soporte integrado para gráficos 2D y 3D, incluida la biblioteca OpenGL. Dado que la plataforma Android incluye la popular base de datos SQLite de código abierto, se alivia la carga del almacenamiento de datos. La Figura 1 muestra una jerarquía de software de Android simplificada.
5. Arquitectura de aplicaciones
Como se mencionó anteriormente, Android se ejecuta en el kernel de Linux. Las aplicaciones de Android están escritas en el lenguaje de programación Java y se ejecutan en una máquina virtual (VM). Cabe señalar que esta VM no es la JVM que imaginaste, sino la Máquina Virtual Dalvik, que es una tecnología de código abierto. Cada aplicación de Android se ejecuta en una instancia de Dalvik VM, que reside en un proceso administrado por el kernel de Linux, como se muestra en la siguiente figura.
Las aplicaciones de Android se componen de uno o más componentes:
Actividades
Las aplicaciones con interfaz de usuario visual se implementan mediante actividades. Una acción comienza cuando el usuario selecciona una aplicación desde la pantalla de inicio o el iniciador de aplicaciones.
Servicios
Los servicios deben usarse para cualquier aplicación que deba durar un período de tiempo prolongado, como un monitor de red o una aplicación de verificación de actualizaciones.
Proveedor de contenido
Piense en un proveedor de contenido como un servidor de base de datos.
La tarea del proveedor de contenido es gestionar el acceso a datos persistentes, como una base de datos SQLite. Si su aplicación es muy simple, es posible que no necesite crear un proveedor de contenido. Si está creando una aplicación más grande, o si está creando una aplicación que necesita proporcionar datos a múltiples actividades o aplicaciones, puede utilizar proveedores de contenido para lograr el acceso a los datos.
Receptor de transmisión
Las aplicaciones de Android se pueden utilizar para procesar un elemento de datos o responder a un evento (como recibir un mensaje de texto).
Las aplicaciones de Android se implementan en el dispositivo junto con un archivo AndroidManifest.xml. AndroidManifest.xml contiene la información de configuración necesaria para instalarlo correctamente en el dispositivo. Incluye los nombres de clase requeridos y los tipos de eventos que la aplicación puede manejar, así como los permisos necesarios para ejecutar la aplicación. Por ejemplo, si una aplicación necesita acceder a la red (por ejemplo, para descargar un archivo), ese permiso debe aparecer explícitamente en el archivo de manifiesto. Muchas aplicaciones pueden tener habilitado este permiso específico. Esta seguridad declarativa ayuda a reducir la posibilidad de que aplicaciones maliciosas dañen el dispositivo.
6. Herramientas necesarias
La forma más sencilla de empezar a desarrollar aplicaciones de Android es descargar AndroidSDK y EclipseIDE. El desarrollo de Android se puede realizar en Microsoft Windows, Mac OS X o Linux.
Este artículo supone que está utilizando el IDE de Eclipse y el complemento de herramientas de desarrollo de Android para Eclipse. Las aplicaciones de Android están escritas en lenguaje Java, pero compiladas y ejecutadas en Dalvik VM (máquina virtual que no es Java). Programar en el lenguaje Java es muy fácil en Eclipse; Eclipse proporciona un entorno Java rico, que incluye ayuda contextual y sugerencias de código. Una vez compilado el código Java, Android Developer Tools garantiza que esté empaquetado correctamente, incluido el archivo AndroidManifest.xml.
Aunque es posible desarrollar aplicaciones de Android sin Eclipse y el complemento de herramientas de desarrollo de Android, eso requiere estar familiarizado con el SDK de Android.
El SDK de Android se distribuye como un archivo ZIP, que se puede extraer a un directorio de su disco duro. Dado que existen varias actualizaciones de SDK, se recomienda organizar conscientemente el entorno de desarrollo para cambiar fácilmente entre diferentes instalaciones de SDK.
El SDK incluye:
android.jar
Un archivo Java que contiene todas las clases del SDK de Android necesarias para crear su aplicación.
directorio documention.html y docs
Documentación SDK proporcionada localmente y en línea. Esta documentación se presenta principalmente en forma de JavaDocs para facilitar la navegación por la gran cantidad de paquetes del SDK. La documentación también incluye una guía de desarrollo de alto nivel y enlaces a la comunidad de Android.
Directorio de muestras
El subdirectorio de muestras contiene código fuente para varias aplicaciones, incluido ApiDemo, que muestra muchas API. Esta aplicación de muestra puede servir como un buen punto de partida para el desarrollo de aplicaciones para Android.
Directorio de herramientas
Contiene todas las herramientas de línea de comandos para crear aplicaciones de Android. La herramienta más utilizada y útil es la utilidad adb (Android Debug Bridge).
usb_driver
Este directorio contiene los controladores necesarios para conectar el entorno de desarrollo a un dispositivo habilitado para Android (como el teléfono de desarrollo desbloqueado G1 o Android Dev 1). Sólo los desarrolladores de la plataforma Windows necesitan estos archivos.
Las aplicaciones de Android pueden ejecutarse en el dispositivo real o en el emulador de Android incluido con el SDK de Android. La Figura 3 muestra la pantalla de inicio del emulador de Android.
7. Puente de depuración de Android
La utilidad adb admite algunos parámetros de línea de comando opcionales para proporcionar funciones potentes, como copiar archivos hacia y desde el dispositivo. Es posible utilizar los parámetros de la línea de comandos del shell para conectarse al teléfono y enviar comandos básicos del shell. La Figura 4 muestra el comando adb shell ejecutándose en un dispositivo real conectado a una computadora portátil con Windows mediante un cable USB.
En este entorno de shell, puede:
Mostrar la configuración de red. La configuración de red puede mostrar múltiples conexiones de red. Tenga en cuenta estas múltiples conexiones de red:
lo es una conexión local o de bucle invertido.
tiwlan0 es una conexión WiFi, a la que el servidor DHCP local proporciona una dirección.
Muestra el contenido de la variable de entorno PATH.
Ejecuta el comando su para convertirte en superusuario.
Cambie el directorio a /data/app, donde se almacenan las aplicaciones del usuario.
Listar directorios que contienen una aplicación. Los archivos de aplicaciones de Android son en realidad archivos de almacenamiento que se pueden ver a través de software como WinZip. La extensión es apk.
Emita un comando ping para ver si Google.com está disponible.
Desde el mismo entorno de símbolo del sistema, también puede interactuar con bases de datos SQLite, iniciar programas y realizar muchas otras tareas a nivel del sistema. Imagina que estás conectado a un teléfono, por lo que esta es una característica bastante sorprendente.