ANDROID ?....DE QUÉ ME HABLAN

ANDROID ?.... ARE YOU TALKING ABOUT

Fecha de recepción: Junio de 2014
Fecha de aceptación: Agosto de 2014

Carlos Alberto Vanegas

Ingeniero de Sistemas, Universidad Incca de Colombia; Especialista en Ingeniería de Software, Universidad Distrital Francisco José de Caldas; Magíster en Ingeniería de Sistemas, Universidad Nacional de Colombia. Docente investigador del grupo CompuParalela adscrito a la Facultad Tecnológica de la Universidad Distrital Francisco José de Caldas. Contacto: cavanegas@udistrital.edu.co


Resumen

Actualmente el uso de dispositivos móviles se ha incrementado, especialmente los teléfonos inteligentes a los cuales se les han proporcionado funciones como pantallas de alta resolución, mayor potencia de procesamiento, mayor capacidad de almacenamiento, navegación por Internet, reproducción de multimedia, realizar operaciones bancarias, GPS, conexión a redes sociales, Wi-fi, entre otras. Estos dispositivos corren bajo un sistema operativo determinado que hace posible administrar las diferentes aplicaciones con capacidades avanzadas. Android es un sistema operativo abierto para dispositivos móviles adquirido por Google y por el grupo Open Handset Allience que representa una alternativa tecnológica capaz de administrar todos los recursos de manera eficiente y sin interrupciones, de tal manera que el usuario puede mantener una comunicación estable haciendo uso de los recursos que el hardware le suministra. En este artículo se analiza el sistema operativo Android, su arquitectura, las versiones existentes, su máquina virtual Dalvik, así como el desarrollo de un sencillo ejemplo de una aplicación Android. of traditional cell phones to great deal

Palabras Claves

aplicación, código abierto, dispositivo, programación, sistema operativo.


Abstract

Today the use of mobile devices has increased, especially those called smartphones which have been provided with useful features like high resolution screens, more processing power, more storage, internet browsing, multimedia playback, banking operations, GPS, download games, social networking, Wi-Fi, Bluetooth, watch TV, listen to radio, etc.. These devices are under a particular operating system that makes it possible to manage different applications with advanced capabilities. Android is an open operating system for mobile devices purchased by Google and Open Handset Allience group that represents a technological alternative capable of managing all resources efficiently and without interruption, so that the user can maintain stable communication using resources that the hardware supplied. This article seeks to know a little about the Android operating system, its architecture, the existing versions, the Dalvik virtual machine, as well as the development of a simple example of an Android application

Keywords

application, device, open source, operating system, programming.


Introducción

Android es un sistema operativo basado en GNU/Linux de código abierto bajo licencia Apache, el cual permite la creación principalmente de aplicaciones para dispositivos móviles —teléfonos inteligentes, tablets, reproductores MP3, notebook, y otros— desarrollado por Google [1] y actualmente liderado por el grupo Open Handset Alliance [2], en el cual se agrupan varias compañías del sector, entre las cuales se encuentran: Google, Samsung, HTC, Dell, Intel, Qualcomm, Motorola, LG, Telefónica, T-Mobile, Nvidia. Android permite desarrollar aplicaciones usando código Java y C —se compila en código nativo ARM, familia de microprocesadores RISC diseñados por la empresa ARM Holdings— [3]. Las características de la plataforma Android son [4]:

2. Arquitectura Android

La arquitectura de Android [4], [5] está formada por cuatro capas o niveles que le permiten al programador la creación de aplicaciones. Su distribución ayuda a acceder a las diferentes capas por medio de librerías y cada capa utiliza los elementos de la capa inferior para realizar sus funciones, por eso, su arquitectura es tipo pila. La arquitectura del sistema operativo Android se puede aprecia en la figura 1

2.1 Capa Linux kernel

El núcleo de Android está basado en la versión 2.6, adaptado a las características de hardware para dispositivos móviles. El kernel es una capa de abstracción del hardware (hardware abstraction layer) que permite que las aplicaciones accedan a través de drivers (controladores), y también asume la administración de los recursos del teléfono y del sistema operativo. En el núcleo se encuentran los siguientes elementos:

2.2 Capa librerías (libraries) [6]

Son bibliotecas nativas de Android escritas en C/ C++ y son las encargadas de realizar la comunicación entre la capa de abstracción de hardware con las API (Application Programming Interface - Interfaz de Programación de Aplicaciones) y las aplicaciones. Las principales librerías son:

2.3 Entorno de ejecución Android (Android runtime)

Aunque no se considera una capa, también está formado por librerías. Las principales librerías son:

2.4 Capa marco de trabajo de aplicaciones (application framework)

Está conformada por clases y servicios que sirven para obtener las funciones básicas de los móviles y programar aplicaciones. Sus componentes permiten acceder a los recursos de las capas Libraries y Linux Kernel. Se encuentran los siguientes elementos:

2.5 Capa aplicaciones (applications)

Es la capa de aplicaciones del dispositivo, donde se encuentra la interfaz de usuario, las aplicaciones programadas con Java, las aplicaciones preinstaladas y las instaladas por el usuario. En ella se encuentran los siguientes elementos:

3. Versiones Android

El sistema operativo Android [7], [8] ha evolucionado vertiginosamente desde su primera versión 1.0 hasta la actual 4.0. Generalmente en cada actualización se solucionan errores de versiones anteriores y se le agregan nuevas funciones. Por otro lado, a cada versión de Android se le denomina con un nombre en código de un puesto en orden alfabético y un nivel de API [9], el cual es un número entero que identifica la nueva versión. El nuevo nivel API es compatible con versiones anteriores, es decir, se agregan nuevas funcionalidades, se actualizan las API más obsoletas, pero no se quitan, y en raras ocasiones estas se modifican o se eliminan. A continuación se relacionan las diferentes versiones de Android:

4. Máquina virtual Dalvik (Software Development Kit Android-SDK Android)

El SDK Android es una máquina virtual llamada Dalvik [10],[11],[12] que proporciona herramientas y API para desarrollar aplicaciones en la plataforma Android. Está basada en registros y ejecuta clases compiladas por intermedio del compilador de Java que posteriormente es convertida a formato nativo Dalvik utilizando la herramienta dx. En este kit de desarrollo se encuentran herramientas para entornos de desarrollo y depuración, conjuntos de bibliotecas o librerías, emuladores de teléfonos móviles, documentación, ejemplos, conexión a Eclipse IDE para Java.

El SDK Android funciona con los sistemas operativos Windows Xp o superior, Mac OS X 10.4.8 o superior, Ubuntu 6.06 o superior y en otras distribuciones de Linux (Open Handset Alliance solo da soporte a Ubuntu), necesita Python 2.2 y Java 1.5 o superior y se puede integrar al entorno de desarrollo de Eclipse IDE para Java. Como su arquitectura se basa en el kernel Linux es posible delegar las tareas relacionadas con la gestión de hilos y memoria de bajo nivel.

El SDK ejecuta los archivos en formato Dalvik Executable (*.dex), el cual es un formato optimizado para un almacenamiento eficiente. De esta manera es posible que el código sea compilado a un bytecode independiente de la máquina en la que se va a ejecutar, por lo que la máquina virtual interpreta dicho bytecode cuando se ejecuta una aplicación. El uso de SDK Android permite la reducción del tamaño de los programas porque busca toda la información duplicada en las diferentes clases y las reutiliza, esto ayuda a liberar el espacio en memoria de objetos que no se estén utilizando y mantener siempre libre la máxima memoria posible.

5. Crear una aplicación Android utilizando Eclipse IDE para Java

Aunque para crear aplicaciones Android se pueden utilizar varios programas autónomos o Web como, App Inventor (disponible en http://www.appinventorbeta.com/learn/setup/), iBuilsApp (disponible en http://ibuildapp.com/), Feed.nu (disponible en http://feed.nu/) y Apps GevSer (disponible en http://www.appsgeyser.com/). En este apartado se presentará la creación de una aplicación Android en Windows utilizando Eclipse IDE para Java, el cual es recomendado por Android para crear Apps (aplicaciones). Para esto es necesario tener en cuenta lo siguiente:

Si se tiene instalado el software mencionado anteriormente, el siguiente paso para desarrollar una aplicación Android que visualice el mensaje Mi primer programa con Android, desde el entorno de Eclipse IDE, se deberá crear un nuevo proyecto llamado PrimerProgramaAndroid. Para esto se deben realizar los siguientes pasos:

  1. Dentro del entorno de Eclipse seleccione File > New > Project/, como se observa en la figura 2:
  2. Al pulsar la opción Project, se obtendrá la siguiente figura 3:

  3. Seleccionar el icono Android Project y pulsar el boton Next, para visualizar la siguiente pantalla: figura 4
  4. En el campo de texto al frente de Project Name escribir el nombre del nuevo proyecto, en este caso el proyecto se llamará PrimerProgramaAndroid y nuevamente pulse el botón Next, para obtener la siguiente figura 5:
  5. Seleccione la version SDK de Android que previamente halla instalado, para el ejemplo se seleccionó la plataforma Android 2.3.3. Pulse el boton Next para mostrar la siguiente pantalla: Figura 6
  6. En esta ventana se puede modificar todo lo concerniente a la informacion de la aplicación:
    1. Application Name: es el nombre de la aplicación que aparecerá en el dispositivo Android, tanto en la barra superior durante la ejecucion, como en el icono que se instalará en el menú de programas.
    2. Package Name: será el nombre del paquete del espacio de nombres donde se almacenará la aplicación generada.
    3. Create Activity: es el nombre de la clase que será generada. Esta será una subclase de Activty Android, la cual es una clase que se puede ejecutar y modificar.
    4. Minimum SDK: se especifica el nivel del API Android que requiere la aplicación.

    Al pulsar el boton Finish, se obtendrá la siguiente figura 7:

    Si se pulsa sobre el signo + al lado del nombre de la aplicación, se observarán los siguientes elementos del proyecto Android: el descriptor de la aplicación (AndroidManifest. xml), el código fuente y una serie de archivos con recursos.

  7. Pulse sobre la carpeta src, luego sobre mi.ejemplo.primerprogramaandroid y por último sobre PrimerProgramaAndroidActivity, allí dé doble clic sobre el programa fuente PrimerProgramaAndroidActivity para obtener el código fuente generado, como se observa en la siguiente figura 8:
  8. Modificar el código de la aplicación para mostrar en el dispositivo el mensaje deseado. Para ello se debe realizar lo siguiente:
  1. Colocar en comentario la instrucción setContentView(R.Layout.main).
  2. Agregar las siguientes instrucciones:
    • import android.widget.TextView; (se importa este paquete para poder utilizar el objeto TextView).
    • TextView mitexto=new TextView(this); (se crea un objeto llamado mitexto al cual se le asigna espacio de memoria de tipo TextView).
    • mitexto.setText(“Mi primer programa con Android”); (se le asigna al objeto mitexto por intermedio de la funcion setText un mensaje).
    • setContextView(mitexto); (utilizando la funcion setContentView se visualiza el contenido del objeto mitexto en el dispositivo).

    Al finalizar se debería observar el codigo fuente como se aprecia en la siguiente figura 9:

  3. Seleccione la opcion Run > Run (Ctrl F11) o simplemente pulse el icono del entorno de Eclipse para ver la siguiente ventana: Figura 10
  4. Seleccione la opcion Android Application y pulse el boton OK, para visualizar el dispositivo Android (la inicializacion del emulador es algo lenta). Figura 11

6. Conclusiones

El sistema operativo Android es de código abierto tanto para fabricantes de dispositivos móviles como para desarrolladores de aplicaciones.

Android permite administrar los recursos eficientemente y sin interrupciones. También permite desarrollar aplicaciones utilizando código Java y C.

La arquitectura de Android está formada por cuatro niveles o capas, a saber, Linux kernel, libraries, application framework, applications.

En la máquina virtual Dalvik de Android se encuentran herramientas para entorno de desarrollo y depuración, librerías, emuladores de teléfonos móviles, documentación, ejemplos y conexión a Eclipse IDE for Java. Las aplicaciones Android reducen el tamaño de los programas, lo que permite liberar espacio de memoria.

Referencias

[1] Google Projects for Android [en línea]. Disponible en http://code.google.com/intl/es/android/.

[2] Open Handset Alliance [en línea]. Disponible en http://www.openhandsetalliance.com/android_overview.html.

[3] Software Android [en línea]. Disponible en http://upcommons.upc.edu/pfc/bitstream/2009.1/6752/1/memoria.pdf.

[4] What is Android [en línea]. Disponible en http://developer.android.com/guide/basics/what-is-android.html.

[5] Arquitectura de Android [en línea]. Disponible http://androideity.com/2011/07/04/arquitectura-de-android/.

[6] Software de comunicaciones – Arquitectura Android [en línea]. Disponible en https://sites.google.com/site/swcuc3m/home/android/generalidades/2-2-arquitectura-de-android.

[7] SDK updates [en línea]. Disponible en http://android-developers.blogspot.com/search/label/SDK%20updates.

[8] Versiones Android [en línea]. Disponible en http://es.wikipedia.org/wiki/Android.

[9] Api,s Level [en línea]. Disponible http://developer.android.com/guide/appendix/api-levels.html.

[10] Android SDK, ya [en línea]. Disponible en http://www.visualbeta.es/647/movil/android-sdk-ya-disponible/.

[11] Open Handset Alliance Releases Android SDK [en línea]. Disponible en http://www.openhandsetalliance.com/press_111207.html.

[12] La máquina virtual Dalvik [en línea]. Disponible en http://gdroid.com.mx/blog/2011/06/12/ la-maquina-virtual-dalvik/.