APORTE DE: SUSANA URIBE LOPEZ
CODIGO: 1.039.758.561
SISTEMA OPERATIVO ANDROID
Android, el sistema operativo
para dispositivos móviles de Google, es un software que ha dado mucho de qué
hablar en el mundo entero, por el lugar que ahora ocupa y en tan rápido tiempo
para la industria de la tecnología móvil
y la sociedad en general.
Este artículo hace una
introducción al mundo de Android y en especial al desarrollo de aplicaciones
para este sistema operativo, se enfatiza en las pautas y conocimientos
necesarios para el desarrollo de aplicaciones para el usuario final y su
lectura puede ayudar a un usuario a entender cómo funciona un teléfono móvil
con Android.
1. Introduccion:
Android, el sistema operativo
para dispositivos móviles que está transformando la industria a nivel mundial
una apuesta por varias empresas para presentar un mejor producto y servicio
para los usuarios finales de teléfonos inteligentes y tablets, con una
característica fundamental: ser un producto de software libre.
A continuación, se presenta una
reflexión en relación con que es el sistema Operativo Android, cual ha sido su
evolución histórica para convertirse en el sistema más utilizado en países como
Estados Unidos, sus ventajas,
arquitectura describiendo las capas que
lo componen, su anatomía y se finaliza con algunas sugerencias para su
programación.
2. Sistema Operativo Android y su desarrollo histórico
Cuando se habla de Android o de
otro software, es preciso diferenciar los conceptos de software y sistema
operativo. El Software o “Programa” es lo intangible o capa lógica que está sobre otra
capa física que puede ser un computador, teléfono inteligente, tablets o televisor
y que permite obtener funcionalidades sobre ella.
Por su parte el
“Sistema
Operativo” es el conjunto de programas que efectúan la gestión de los
procesos
básicos de un sistema informático y permiten la normal ejecución de las
operaciones básicas del componente físico donde está instalado. A este
grupo pertenece Android, siendo un sistema operativo para dispositivos
móviles, aunque también existe para televisores, relojes y computadores y
que
se caracteriza básicamente por dos características
que son software libre y multiplataforma.
Figura 2
Logo de la tienda virtual Android Market.
Fuente: https://play.google.com/store/apps/details?id=com.google.android.finsky
Logo de la tienda virtual Android Market.
Fuente: https://play.google.com/store/apps/details?id=com.google.android.finsky
Evolución histórica
Respecto al desarrollo histórico
de Android, vale pena destacar, que se
inició en una empresa que desarrollaba software para dispositivos móviles
llamada Android IN, pero se dio a conocer en el
año 2005 cuando fue adquirida por
Google.
Entre el 2005 y 2008, Google
lidera un proceso de comunicación con empresas fabricantes de hardware y software
para dispositivos móviles, que en
noviembre de 2007 se conoció como
Open Handset Alliance y que para el
2011 la conformaban compañías de tecnología para dispositivos móviles,
las cuales colaboran con el desarrollo del sistema operativo Android y trabajan
en sociedad para implementar tecnologías y servicios basados en este sistema
Operativo, afianzando su característica
de código abierto bajo la licencia Apache V2. (Open, 2012) y durante
este mismo lapso de tiempo el equipo de Android en Google, desarrolló la
plataforma para dispositivos móviles tomando como base el kernel de Linux (Engadget, 2007).
El lanzamiento inicial del
Android Software Development Kit fue en noviembre de 2007, luego en agosto 2008
se publicó la versión de Android 0.9 SDK
en fase beta, en septiembre del mismo año, Google lanzó Android 1.0
SDK versión para el sistema operativo
del teléfono HTC Dream (G1) de la empresa HTC.
Durante el 2009, se presentaron
las versiones 1.1 de Android en marzo, luego Google lanzó la versión 1.5 de
Android OS (llamada Cupcake) con su respectivo SDK y basada en el kernel de Linux versión 2.6.27,
en
septiembre Android 1.6 “Donut” versión basada en el kernel 2.6.29, al finalizar este año se publican las
versiones 2.0 y 2.1 conocidas como Eclair también basadas en el kernel 2.6.29.
En el 2010 se publicaron la
versión 2.2 llamada Froyo basado en el kernel 2.6.32 de Linux y la versión la versión 2.3 denominada Gingerbread.
En el 2011 surgió la versión 3.0
de Android, destinada para dispositivos Tablets, bajo el nombre de Honeycomb y se publicaron actualizaciones a las
versiones 3.1 y 3.2.
Figura 3
Logos de las diferentes versiones de Android.
Fuente: http://www.elandroidelibre.com/2012/04/el-gran-problema-de-las-nuevas-versiones-de-android-los-datos-y-la-vision-de-jean-baptiste-queru.html
Logos de las diferentes versiones de Android.
Fuente: http://www.elandroidelibre.com/2012/04/el-gran-problema-de-las-nuevas-versiones-de-android-los-datos-y-la-vision-de-jean-baptiste-queru.html
Ventajas de Android
Android avanza a pasos
agigantados, toda una comunidad de desarrolladores a nivel mundial respaldan la
plataforma, lo cual facilita la creación
de aplicaciones ya que se encuentra documentación oficial tanto por Google como
de otras comunidades independientes, que influenciadas por la cultura del
software libre, publican sus códigos, experiencias y facilitan el trabajo de
los programadores y/o usuarios que se inician en esta plataforma.
Una de las ventajas de Android es
su plataforma abierta, lo cual le permite al sistema operativo estar en
dispositivos de diferentes gamas, prestaciones, precios y fabricantes, de
manera que puede asegurar tanto la permanencia como una buena cuota del mercado
al no estar segmentado a una parte del mercado.
Algunas de las razones por las cuales desarrollar para Android,
según el desarrollador Tim Bray son:
- “La experiencia de usuario de Android es muy satisfactoria y lo más importante, mejora rápidamente.
- Es amistoso con el desarrollador, las reglas o condiciones de entrada son muy bajas para los varios millones de personas en el planeta que están cómodos con el lenguaje de programación java.
- Las API son muy buenas y completas. No hay nada interesante que los teléfonos puedan hacer que no está expuesto a través de alguna API.
- Cualquiera persona puede vender cualquier programa que escriben a través del Android Market, no hay que esperar aprobación a tu aplicación.
- Es de código abierto.
- El espacio de los móviles ha tenido un enorme impacto en las economías emergentes del mundo menos desarrollado y Android parece ser la plataforma de software adecuado para ello”. (Bray, 2010).
3. Arquitectura de android
Figura 4
Arquitectura de Android.
Fuente: http://developer.android.com/about/versions/index.html
Arquitectura de Android.
Fuente: http://developer.android.com/about/versions/index.html
3.1 Capa de aplicaciones (applications)
Es aquella que ve el usuario final,
para Android se usa el lenguaje de programación Java y tiene un conjunto de
aplicaciones básicas incluidas como: un cliente de correo electrónico, programa
de SMS, calendario, mapas, navegador y contactos.
3.2 Capa del framewok
(applications Framework)
Un framework es un conjunto de
reglas definidas que permiten resolver un problema común u ofrecer herramientas
para resolverlo. En el desarrollo de software un framework se refiere a un software
o un conjunto de APIs que ayuda a la
creación de nuevo software.
Android ofrece a los desarrolladores
la capacidad de crear aplicaciones ricas e innovadoras, quienes son libres para
usar el hardware del dispositivo,
información de acceso a la ubicación geográfica GPS, ejecutar servicios
en segundo plano, configurar alarmas, añadir las notificaciones de la barra de
estado, entre otras.
La arquitectura de Android está
diseñada para simplificar la reutilización de componentes, y cualquier
aplicación puede publicar o exponer sus capacidades y otra podrá usar los botones, cajas de texto,
listas, notificaciones, según las restricciones de seguridad impuestas por el
framework).
3.3 Capa de librerías (Libraries)
Android incluye un conjunto de
librerías escritas en c/c++ usadas por varios componentes del sistema
operativo. Las capacidades o funciones que realizan estas librerías están expuestas a los desarrolladores a
través del framework de aplicaciones de Android. Algunas de las bibliotecas del
núcleo son las siguientes:
System c library
Es una implementación del
estándar C para las funciones básicas de manejo de dispositivos por el kernel
de Linux.
Media libraries
Está basado en el paquete de
librerías OpenCore, que son capaces de reproducir y grabar audio y vídeo en
varios formatos, lo mismo que en archivos de imágenes y fotografías.
Surface manager
Librería encargada de la gestión
y el acceso a la pantalla del dispositivo.
Libwebcore
Un motor de navegación que
alimenta el navegador de Android y
permite ver páginas web embebidas dentro de cualquier otra aplicación.
Sgl
Las librerías necesarias para
crear gráficos en 2D
3d libraries
Son librerías basadas en OpenGL
ES 1.0; utilizan hardware de aceleración 3D (si están disponible en el
dispositivo) o alternativamente
renderizado 3D por software.
Free type
Librerías para la interpretación
de mapa de bits y tipografía de textos.
SQLITE
Es un sistema de base de datos
relacional reducido pero potente.
3.4 Capa Android Runtime
Cada aplicación Android se
ejecuta con su propia instancia de la máquina virtual de Dalvik, la cual ha
sido escrita para que un dispositivo pueda ejecutar varias máquinas virtuales
de manera eficiente usando el formato Dalvik (.Dex), el cual ha sido optimizado
para un consumo de memoria mínimo usando el kernel de Linux para la
funcionalidad subyacente, como la gestión de memoria e hilos a bajo nivel.
3.5 capa linux kernel
3.5 capa linux kernel
Es la capa de abstracción entre
el hardware y el software, Android se basa en
versión 2.6.x y superiores del kernel
Linux, que es utilizado para los servicios del núcleo del sistema como
la seguridad, la gestión de memoria, gestión de procesos, pila de red, modelo
de controlador y gestión de usuarios.
4. Android Software
Develoment Kit (SDK)
SDK es un conjunto de archivos con código que contienen
funciones comunes del sistema operativo que facilitan el proceso de desarrollo,
como manejo de la cámara y del GPS por el sistema operativo se asocian bajo el nombre de APIs, y todas ellas
constituyen una plataforma de software.
El SDK de Android provee un
conjunto de herramientas y APIs necesarias para desarrollar aplicaciones usando
en su mayoría el lenguaje de programación JAVA y se puede descargar, según el
sistema operativo como Windows usando el
instalador “archivo.exe” y para Linus se descarga y descomprime el SDK, (Developer, 2012).
Es necesario para instalar y
configurar el SDK tener instalada previamente el JDK (Java Development Kit )
(Oracle 2012) en la versión 5 o 6 y para
Linux se debe instalar además las librerías C glipc.
5. Programación para Android
El lenguaje de programación para
aplicaciones de Android es en su mayoría Java, como no existe el paquete de Java
AWT para los componentes gráficos, la plataforma Dalvik de Android interpreta el código hecho en Java.
En Android también se puede
programar en c++, ya que la capa de librerías están construidas en este lenguaje,
pero Google no da soporte, por lo tanto, su uso no es muy extendido y existen
interfaces de comunicación de estas librerías en Java para que los desarrolladores
las puedan utilizar.
Ahora bien, cuando se instala una
aplicación en Android, se tiene una instancia propia de la JVM y se ejecuta en espacio llamado “sandbox” que
se caracteriza por que cada aplicación es un usuario diferente asignado un único ID para pueda acceder a la aplicación y
cada proceso cuenta con su máquina virtual (VM)
ejecutando el código de manera aislada, utiliza el principio de “privilegios mínimos” es decir, cada
aplicación tiene acceso sólo a aquellos
componentes que necesita, haciendo el ambiente muy seguro.
Sin embargo, una aplicación puede
solicitar permiso para acceder a los datos del dispositivo, tales como: contactos
del usuario, mensajes SMS, el almacenamiento (tarjeta SD), cámara, Bluetooth,
estos permisos son autorizados por el usuario final
6. Anatomia de una aplicación Android
Una aplicación para Android
tiene cuatro componentes que son:
actividades, servicios, Content Provider, intent e intent filters, los cuales
pueden estar todos contenidos, algunos
de ellos o inclusive solo uno y el manifiesto.
6.1. Actividad
Una actividad es una única pantalla
o ventana en la aplicación, las cuales se implementan en una sola “clase” y muestran la interfaz del usuario compuesta
por varias vistas (Views), controles, widgets o elementos gráficos con los que
se interactúa.
Figura 5
Ciclo de vida de una actividad.
Fuente: http://developer.android.com/guide/components/activities.html
Ciclo de vida de una actividad.
Fuente: http://developer.android.com/guide/components/activities.html
6.2. Services (servicios)
Un servicio es un componente de
aplicación que puede realizar operaciones de larga duración sin estar activado
o en primer plano y que no proporciona una interfaz de usuario, lo que permite
que funcione en un segundo plano o unirse a otro para hacer comunicación entre
procesos, más conocida como IPC.
Ejemplos de servicios son: transacciones
en la red, reproducir música, realizar operaciones con archivos de E/S (Entrada
y Salida), o interactuar con un proveedor de contenido.
Un servicio puede adoptar dos
formas que son "Started"
cuando un componente de aplicación inicia el servicio llamando al método
StartService. Una vez iniciado,puede ejecutarse en segundo plano de forma
indefinida, incluso si el componente que se inició se destruye, por ejemplo
descargar o cargar un archivo a través de la red.
Figura 6
Ciclo de vida de servicio. El diagrama de la izquierda muestra el ciclo de vida cuando el servicio es creado con startService() y el diagrama de la derecha muestra el ciclo de vida cuando el servicio es creado con bindService().
Fuente: http://developer.android.com/guide/components/services.html
Ciclo de vida de servicio. El diagrama de la izquierda muestra el ciclo de vida cuando el servicio es creado con startService() y el diagrama de la derecha muestra el ciclo de vida cuando el servicio es creado con bindService().
Fuente: http://developer.android.com/guide/components/services.html
6.3 Content provider
Los proveedores de contenido es la manera de compartir datos entre
aplicaciones, Android tiene una serie de proveedores de contenido para los
tipos de datos (audio, video, imágenes, información de contacto personal) con
dos opciones: crear un proveedor de contenido propio (una subclase
ContentProvider) o se puede agregar los
datos a un proveedor existente.
6.4 Intent e intent filter
Intent es una clase especial que
utiliza Android para moverse entre las pantallas, describiendo lo que una
aplicación quiere hace. Sus partes más importantes son “la acción” como ver y editar
y “los datos” a los que se les aplica la acción, los cuales se expresan en formato URI (Uniform Resource
Indicator).
Un Intent es una solicitud de
hacer algo, por ejemplo mostrar la información de contacto y un IntentFilter es
una descripción de que el Intent(s) es capaz de gestionar esa actividad es
decir Wiews a los datos de un contacto.
6.5 Android Manifiest
Cada aplicación debe tener un
archivo AndroidManifest.xml en su
directorio raíz, en el cual se presenta información esencial de la aplicación
al sistema operativo como: nombres de los paquetes de Java que sirve como identificador
único para la aplicación, actividades, servicios, intents y los proveedores de
contenido que componen la aplicación. Este manifiesto declara los permisos que la aplicación debe tener
para acceder a las partes protegidas de la API y la forma en que interactúa con
otras aplicaciones y los permisos que los demás están obligados a tener a fin
de interactuar con los componentes de la aplicación.
7. Sugerencias para una aplicación básica para Android
A continuación, se presentan
algunas recomendaciones a seguir, para
realizar una aplicación básica de
Android.
Luego de instalar el SDK para el
sistema operativo que se esté utilizando, para Android se debe instalar Integrated Development
Environment (IDE) “Eclipse” ya que provee un plugin llamado “ADT” para hacer la
programación y el depurado del código que permite simular el comportamiento de
la aplicación.
Luego, se crea Android Virtual Device (AVD) dentro
de Eclipse, este es un emulador de un
dispositivo con el sistema operativo que permite ver el comportamiento que
tiene la aplicación en desarrollo sin necesitad de disponer un teléfono físico,
Después se crear un “nuevo
proyecto” en el IDE Eclipse de manera similar
como se hace en Java, completando la información básica de: nombre del proyecto, Build Target,
nombre de la aplicación, nombre del paquete y Create activity
Se continúa con la construcción
de una Interfaz de Usuario (UI) que
muestra los cambios en el código en la
clase HelloAndroid.java, esta interfaz para Android está compuesta por vistas
(views) o elementos gráficos y se envía al método setContentView() el elemento tv para que lo proyecte en la UI.
Finalmente se ejecutar la aplicación seleccionando la
opción “Run” del menú proyecto en Eclipse y éste automáticamente configurará y
ejecutara el emulador de Android AVD que se creó con antelación, mostrando el
nombre de la aplicación.
Figura 7
Vista del emulador android.
Fuente: http://developer.android.com/tools/devices/emulator.html
Vista del emulador android.
Fuente: http://developer.android.com/tools/devices/emulator.html
8. Conclusiones
Android es un sistema Operativo que abarca varios ámbitos
como el de desarrollo, consumo, costos de aplicación que ha evolucionado vertiginosamente desde el
2005, cuando se dio a conocer al mundo al adquirirlo Google y sus descargas
tanto pagas como gratuitas son representativas en el mercado mundial
Además de sus desarrollo rápido
en beneficio de miles de usuarios,
Android es una plataforma abierta
que permite el trabajo colaborativo de muchas personas y empresas y facilita su programación, gracias a su
desarrollo libre y ayudas que
proporciona, lo que permite estar en dispositivos de distintas gamas
presentaciones y precios
9. Bibliografía
Bray, (2010)
www.tbray.org/ongoing/When/201x/2010/03/15/Joining-Google
Brownlow, M. (2012) Smartphone
statistics and market share
http://www.email-marketing-reports.com/wireless-mobile/smartphone-statistics.htm
recuperado 15/04/2012
Developer,(2012).
http://developer.android.com/sdk/index.html
recuperdado 17/04/2012
Eclipse,(2010)
http://www.eclipse.org/downloads/packages/eclipse-ide-java-ee-developers/indigosr1
recuperado 18/04/2012
Engadget, (2007)
www.engadget.com/2007/08/28/google-is-working-on-a-mobile-os-and-its-due-out-shortly recuperado
02/05/2012
Mobile entertainment, (2010).
(www.slideshare.net/stuartdredge/mobile-entertainments-guide-to-android recuperado 18/04/2012
Open Handset Alliance, (2012).
www.openhandsetalliance.com/android_faq.Html
recuperado 25/03/2012







No hay comentarios:
Publicar un comentario