SlideShare una empresa de Scribd logo
1 de 16
Descargar para leer sin conexión
Visión general del
Sistema Operativo
Android
Diseño y evaluación de configuraciones

3º I.T. Informática de Sistemas

Jose Luis Carmona Tamayo
Jose Fco Bravo Sánchez
2012
Visión general del Sistema Operativo Android


¿Que es Android?



Android es un Sistema Operativo diseñado en un inicio para su utilización en dispositivos móviles, pero que gracias a
su diseño ha permitido que sea utilizado en otros dispositos tales como TV Boxs (Woxter Android TV 100), micro-Pcs
(Android MK802), netpcs, reproductores multimedia etc.

Android es desarrollado por la Open Handset Alliance, encargada de desarrollar estándares abiertos para
dispositivos móviles, y que esta compuesta por 84 compañías entre las que se encuentran Google, HTC, Dell, Intel,
Motorola, etc.



Un poco de historia



El sistema operativo Android empezó a desarrollarse por una compañía de software llamada Android Inc, situada en
Palo Alto y fundada por Andy Rubin, Rich Miner, Nick Sears, y Chris White. Esta compañía fue comprada por Google
en 2005, como parte de su estrategia de entrar en el mundo del desarrollo de software para dispositivos móviles.



En 2006 y 2007 fue cuando Google comenzó a ofrecer sericios tales como Google Maps Mobile, Gmail Mobile,
Google Search o Google SMS, para los sistemas Java ME, Symbian o Blackberry. Fue entonces cuando Google se
encontró con el problema de la lentitud de los dispositivos que en ese momento utilizaban mayoritariamente Java
ME.



En 2007 se creó la Open Handset Alliance liderada por Google, y cuyo objetivo es acelerar la innovación en los
dispositivos móviles, ofrecer a los clientes una experiencia móvil mejor, maás barata y mas rica. Este organismo
apostó por por Android como Sistema Operativo para uso en dispositivos móviles, y erigió este Sistema Operativo
como la primera plataforma móvil completa, abierta y libre del mercado.



Caracteristicas



El Sistema Operativo Android, esta compuesto de un núcleo Linux, sobre el cual se han desarollado unas librerías, y
una Maquina Virtual Java llamada Dalvik sobre la cual se creó un Framework de aplicaciones y sobre el que se
ejcutan las aplicaciones Android. Las principales características de Android son:



Framework propio para el desarrollo de aplicaciones, lo cual permite la reutilización y el reemplazo de componentes.




Jose Luis Carmona Tamayo         Jose Francisco Bravo Sánchez                                                  3
Visión general del Sistema Operativo Android


Maquina virtual Java propietaria desarrollada por Dan Bornstein, la cuál está optimizada para requerir poca memoria
y está diseñada para permitir ejecutar varias instancias de la máquina virtual simultáneamente.



Browser integrado basado en el motor open source WebKit.



Librerías gráficas 2D y 3D basadas en la especificación OpenGL ES 1.0



Base de datos relacional SQLite.



Soporte de distintos formatos de audio y video tales como MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF.



Soporte de Telefonía GSM



Soporte de Bluetooth, EDGE, 3G, and WiFi.



Soporte para el manejo de cámara, GPS, y acelerómetro



Soporte para el desarrollo de aplicaciones incluyendo un emulador, herramientas para el debugging, herramientas
para el profiling de memoria y rendimiento así como de un plugin para el entorno de desarrollo Eclipse.




Jose Luis Carmona Tamayo           Jose Francisco Bravo Sánchez                                              4
Visión general del Sistema Operativo Android


Arquitectura del Sistema Operativo Android



La arquitectura usada por el Sistema Operativo Android la podemos dividir en capas, cada una con una misión
específica dentro de la plataforma.




Linux kernel



Esta capa de la plataforma Android, tiene como misión abstraer el hardware del resto de la plataforma. Esta basada
en la versión del kernel 2.6 de Linux, y proporciona a Android servicios básicos tales como seguridad, gestión de
memoria, gestión de procesos, drivers, y capa de red entre otros.



Un ejemplo del auge que esta teniendo Android en la comunidad open source, es el hecho de que en la reciente
liberación de la versión 3.3 del kernel de Linux, ya se incluye código específico de la plataforma Android.




Jose Luis Carmona Tamayo        Jose Francisco Bravo Sánchez                                                  5
Visión general del Sistema Operativo Android


Android runtime



Android proporciona un entorno de ejecución de aplicaciones basado en Java. Se trata de un subconjunto de las
librerías del Core de Java, más una nueva máquina virtual Java desarrollada específicamente para Android, llamada
Dalvik, y que permite entre otras cosas que cada aplicación corra en un proceso y que dicho proceso tenga su propia
instancia de la máquina virtual

Dalvik



Dalvik es una maquina virtual desarrollada para la plataforma Android por Dan Bornstein, con aportaciones del
equipo de desarrollo de Google.



Lo más destacable de esta máquina virtual es la optimización para el bajo consumo de memoria, la posibilidad de
que se ejecuten varias intancias de la misma máquina virtual al mismo tiempo, el aislamiento de procesos, y la
gestión de hebras.



En realidad Dalvik no es una máquina virtual puramente Java, ya que los bytecodes que utiliza no son bytecodes
Java. La forma en la que trabaja es transformando las clases Java compiladas en un formato específico (.dex),
mediante el uso de una utilidad incluida en el SDK de Android llamada dx.



Estas clases en formato dex son las que luego son ejecutadas por Dalvik. Estos ficheros .dex junto con los demás
resources son los que se comprimen en formato zip y forman la aplicación en formato apk (Android package).



Librerías



Además de los componentes descritos anteriormente en la plataforma Android se encuentran una serie de librerías
escritas en C/C++ que son usadas por varios de los componentes de Android, y que además pueden ser utilizadas por
los desarrolladores de aplicaciones a través del Framework de Aplicaciones de Android. Algunas de estas librerías
son:



Librería System C, es una implementación de C estandar basado en BSD especifíca para dispositivos con Linux
embebido.




Jose Luis Carmona Tamayo         Jose Francisco Bravo Sánchez                                                   6
Visión general del Sistema Operativo Android


Librerías multimedia, basadas en OpenCORE de Packet Video, y las cuales permiten reproducción, grabación de los
formatos de audio, video e imágenes más populares, tales como, MPEG4, H.264, MP3, AAC, AMR, JPG, and PNG



LibWebCore, es la librería que nos proporciona un motor para el browser de Android.



SGL, libreria para el motor de gráficos 2D.



Librerías 3D, son una implementación basadas en la API OpenGL ES 1.0, y que permite el uso tandto de la aceleración
3D por hardware como por software.



SQLite, motor para base de datos relacionales ligero, y disponible para cualquiera de las apliaciones.




Framework de Aplicaciones de Android



Android nos proporciona un conjunto de conceptos, prácticas y criterios para el desarrollo de aplicaciones para la
plataforma Android de forma más simple, homogénea, y optimizada. Para ello ha creado este framework que nos
permite aislarnos en cierto de muchos de los detalles de bajo nivel en el desarrollo de aplicaciones.



Eso no quiere decir que no tengamos acceso a las librerías explicadas anteriormente, al contrario tenemos un acceso
directo a estas librerías pero de forma unificada, permitiendo una curva de aprendizaje mucho más rápida, y un
desarrollo de aplicaciones más optimas y compactas.



Básicamente esta capa nos permite ver una aplicación Android desde el punto de vista de desarrollo como una
colección de Vistas, Proveedores de contenidos, Gestores de recursos, Gestores de notificaciones y Gestores de
Actividad.



Vistas (views), equivaldrían al interfaz de la aplicación.



Proveedores de contenidos (contents providers) , permite a las aplicaciones acceder a datos de otras aplicaciones
(p.e. contactos), o compartir datos propios.



Jose Luis Carmona Tamayo           Jose Francisco Bravo Sánchez                                                7
Visión general del Sistema Operativo Android




Gestores de recursos (resource managers), permite el acceso a recursos que no son código, tales como imágenes,
ficheros, etc.



Gestores de notificaciones (notification managers)      , que permiten a las aplicaciones visualizar alertas
personalizadas en la barra de estado.



Gestores de actividad (activity managers), gestionan el ciclo de vida de las aplicaciones y provee una forma de
navegación estándar dentro de las aplicaciones.




Aplicaciones



La última capa de la plataforma Android es la de Aplicación. Android viene con una serie de aplicaciones estándares,
como clientes de email, calendarios, mapas, browsers, programa de SMS, las cuales han sido desarrolladas con el
Framework de Aplicaciones de Android.



En esta capa es en la que los desarrolladores de software trabajarían desarrollando sus propias aplicaciones. Una vez
desarrolladas estas aplicaciones se pueden poner a disposición del público a través de repositorios tales como
Google Play.




Jose Luis Carmona Tamayo         Jose Francisco Bravo Sánchez                                                     8
Visión general del Sistema Operativo Android


Seguridad en la plataforma Android



Para el sistema operativo Android, la seguridad es uno de los puntos claves dentro de su desarrollo. El concepto de
seguridad lo establece en base a la protección de los datos de usuario, protección de los recursos del sistema,
protección respecto a las aplicaciones.



Para lograr estos objetivos, Android proporciona una serie de características para hacer que sea un sistema robusto.
Entre estas características podemos destacar, la robustez a nivel de sistema operativo que lleva implícito el uso de
un kernel Linux, el uso de sandbox obligatorio para todas las aplicaciones, seguridad en la comunicación entre
procesos, firmado de aplicaciones, y el uso de permisos a nivel de usuario.



Además de esto, a nivel de plataforma, cada uno de los componentes se basa en la seguridad de los componentes
del nivel inferior de la plataforma y en que a excepción de una pequeña porción de código del SO que es ejecutado
en modo root, todo el código del kernel de Linux esta restringida por la ejecución dentro de la Sandbox.



Seguridad a nivel de sistema operativo



A nivel de Sistema Operativo Android utiliza la seguridad que provee el kernel de Linux, seguridad en la
comunicación inter-procesos, para porporcionar seguridad entre aplicaciones ejecutándose en distintos procesos, y
la ejecución de las aplicaciones dentro de una Sandbox.



Seguridad Linux



Por el mero hecho de usar Linux como nucleo de la plataforma, se heredan una serie de mecanismos de seguridad
ampliamente probados por el gran uso de Linux en entornos especialmente sensibles a los temas de seguridad. Esto
le proporciona a Android los siguientes beneficios:



Un modelo de permisos basados en usuarios

Aislamiento de procesos

Mecanismos de securización de comunicaciones entre procesos

La posibilidad de eliminar partes innecesarias y potencialmente inseguras del kernel




Jose Luis Carmona Tamayo         Jose Francisco Bravo Sánchez                                                  9
Visión general del Sistema Operativo Android


Como sistema operativo multiusuario, uno de los objetivos básicos de seguridad de Linux es proteger los recursos de
un usuario frente a otro.



La Sandbox de aplicaciones



A diferencia de los sistemas Linux, el sistema Android asigna un único user ID (UID) a cada una de las aplicaciones y la
ejecuta como ese usuario en un proceso separado. Esto hace que cada aplicación se ejecute en una Sandbox, ya el
kernel de Linux facilita la seguridad entre aplicaciones que ejecuta cada usuario, limitando que las aplicaciones
puedan enteractuar entre ellas y con el sistema operativo.



Como este Sandbox se encuentra a nivel de Kernel, todas las aplicaciones del kernel y de niveles superiores se
ejecutaran dentro de este Sandbox por defecto.



Permisos del sistema de ficheros



En sistemas Unix los permisos del sistema de ficheros aseguran que un usuario no pueda leer o cambiar los ficheros
de otro usuario. La ejecución de cada aplicación con un UID distinto hace que los ficheros generados por cada
aplicación no puedan ser utilizados por otra aplicación a menos que explícitamente el desarollador permita esto.



Protección por contraseña



Android se uede configurar para que se verifique una contraseña cada vez que se acceda al dispositivo. Esto permite
prevenir el acceso no autorizado tanto al dispositivo como a la clave criptográfica para sistemas de ficheros
encriptados.



Mejoras de seguridad en la gestión de memoria



Android ha añadido una serie de mejoras en la gestión de la memoria para prevenir la posible utilización de exploits
en el sistema. Alguna de estas mejoras son:



  Address Space Layout Randomization (ASLR) para que la localización de claves en memoria se situen de forma
aleatoria no siempre en la misma posición.


Jose Luis Carmona Tamayo           Jose Francisco Bravo Sánchez                                                  10
Visión general del Sistema Operativo Android


  Hardware-based No eXecute (NX) para prevenir la ejecución de código en la pila y en el heap.

  safe_iop para reducer overflows de enteros

  Extensiones a OpenBSD dlmalloc para prevenir vulnerabilidades existentes.

  OpenBSD calloc para prevenir overflows de enteros durante la reserve de memoria.



Rooteo de dispositivos



Por defecto en dispositivos Android solamente el kernel y un subconjunto de aplicaciones se ejecutan en modo root.
Android no limita la modificación del kernel, sistema opeativo u otros programas si se accede con usuario root.



Por defecto los usuarios no tienen acceso al dispositivo con un usuario root, lo cual hace que de esto un mecanismo
de seguridad. Hay ciertos programas que permiten desblquear esta limitación haciendo que se use el dispositivo con
permisos root, lo cual indirectamente puede hacer que el dispositvo se convierta en un dispositivo no seguro.




Seguridad a nivel de aplicación



Además de los mecanismos de seguridad proporcionados a nivel de sistema operativo, Android proporciona unos
mecanismos para proveer seguridad a nivel de aplicación. A continuación se explican estos mecanismos.



El modelo de permisos de Android: APIs de Protección de acceso



Una aplicación Android solamente puede tener acceso a un rango limitado de recursos del sistema. El sistema
gestiona el acceso de las aplicaciones a estos recursos, ya que se podrían utilizar de forma maliciosa o inapropiada,
lo cual podría provocar problemas para el usuario, sus datos, etc.



Estas restricciones se implementan de distintas formas, desde la ausencia de APIs para el manejo de estos recursos
(p.e. acceso a la tarjeta SIM), hasta el uso de APIS protegidas mediante Permisos. Estas APIs protegidas incluyen:



  Funciones de camara



Jose Luis Carmona Tamayo          Jose Francisco Bravo Sánchez                                                   11
Visión general del Sistema Operativo Android


  Datos de localización (GPS)

  Funciones bluetooth

  Funciones de telefonía

  Funciones SMS/MMS

  Conexiones de datos y de red



Estas recursos son accesibles únicamente desde el Sistema Operativo. Para que una aplicación pueda usar estos
recursos debe declararlo en el manifiest de la aplicación. Cuando un usuario instala la aplicación se le mostrará los
permisos que requiere esa aplicación y será el usuario el que permita la ejecución de dicha aplicación que llevará
implícito el uso de estas APIs.



El permiso de uso de esta API es solamente a nivel de esa aplicación, una vez que se desinstalen los permisos de esas
aplicación desaparecen y si el usuario vuelve a instalar la aplicación se le volverá a pedir autorización para el acceso a
estas APIs.



Comunicación entre procesos



Los distintos procesos pueden comunicarse entre ellos utilizando mecanismos propios de UNIX tales como señales,
sockets, etc. Android además añade mecanismos IPC.



Binder mecanismo ligero de llamada a procedimientos remotos diseñados para alto rendimiento cuando se realizan
llamadas locales. Se relizan mediante la creación de un driver.



Service provee interaces accesibles directamente desde el binder.



Intents es un simple objeto que contiene un mensaje expresando la intención de realizar una acción.



ContentProviders es un almacen de datos que provee acceso a los datos del dispositivo (p.e. lista de contactos). Un
aplicación puede acceder a los datos de otra aplicación que haya expuesto sus datos mediante la creación de un
ContentProvider.




Jose Luis Carmona Tamayo          Jose Francisco Bravo Sánchez                                                     12
Visión general del Sistema Operativo Android


Firmado de aplicaciones



El firmado de aplicaciones es la forma de identificar el autor de la aplicación, y de esta forma permitir las
actualizaciones de las aplicaciones sin mecanismos complejos de verificación de propiedad del autor. Cada aplicación
en la plataforma Android debe estar firmada y cualquier intento de subir una aplicación a Google Play sin firmar será
rechazado.



Cuando una aplicación se instala en un dispositivo Android se comprueba que dicha aplicación esta correctamente
firmada por el certificado incluido en el APK.




Jose Luis Carmona Tamayo         Jose Francisco Bravo Sánchez                                                  13
Visión general del Sistema Operativo Android


Desarrollo de aplicaciones

         Dalvik

         SDK

         NDK



Versiones de la plataforma



Cuando se desarrolla en la plataforma Android hay que tener claro el concepto de “nivel de API”. El nivel de API es
un valor que identifica de forma única la revisión del API del Framework especifica para una determinada versión de
la plataforma Android. Es decir que si queremos que nuestra aplicación sea compatible con una determinada versión
de la plataforma Android tendremos que tener en cuenta el API level para esa determinada versión.



A continuación se muestra una tabla con un resumen de los codenames y API level




    Code name        Version          API level

(no code name)     1.0           API level 1

(no code name)     1.1           API level 2

Cupcake            1.5           API level 3, NDK 1

Donut              1.6           API level 4, NDK 2

Eclair             2.0           API level 5

Eclair             2.0.1         API level 6

Eclair             2.1           API level 7, NDK 3

Froyo              2.2.x         API level 8, NDK 4

Gingerbread        2.3 - 2.3.2   API level 9, NDK 5

Gingerbread        2.3.3 - 2.3.7 API level 10

Honeycomb          3.0           API level 11

Honeycomb          3.1           API level 12, NDK 6

Honeycomb          3.2.x         API level 13

IceCreamSandwich 4.0.1 - 4.0.2 API level 14, NDK 7



Jose Luis Carmona Tamayo         Jose Francisco Bravo Sánchez                                                14
Visión general del Sistema Operativo Android


   Code name         Version        API level



IceCreamSandwich 4.0.3 - 4.0.4 API level 15




Jose Luis Carmona Tamayo       Jose Francisco Bravo Sánchez                      15
Visión general del Sistema Operativo Android




Recursos

http://developer.android.com

http://source.android.com

http://es.wikipedia.org/wiki/Android

http://es.wikipedia.org/wiki/Open_Handset_Alliance

http://www.businessweek.com/technology/content/aug2005/tc20050817_0949_tc024.htm

http://www.techradar.com/news/phone-and-communications/mobile-phones/a-complete-history-of-android-
470327

http://investing.businessweek.com/research/stocks/private/snapshot.asp?privcapId=23584687

http://es.wikipedia.org/wiki/Dalvik

http://www.webkit.org/

http://www.dalvikvm.com/

http://www.ibm.com/developerworks/xml/library/x-androidsecurity/index.html




Jose Luis Carmona Tamayo        Jose Francisco Bravo Sánchez                                          16

Más contenido relacionado

La actualidad más candente

Exposición 20 aniversario linux
Exposición 20 aniversario linuxExposición 20 aniversario linux
Exposición 20 aniversario linuxFreelancer
 
Jose david arango correa tecnologia android
Jose david arango correa tecnologia androidJose david arango correa tecnologia android
Jose david arango correa tecnologia androidjosearango678
 
Tecnología android
Tecnología androidTecnología android
Tecnología androidValeGmz
 
software
softwaresoftware
software270996
 
"Android de la A a la Z" -- Unidad 1
"Android de la A a la Z" -- Unidad 1"Android de la A a la Z" -- Unidad 1
"Android de la A a la Z" -- Unidad 1Android UNAM
 
Diapositiva sobre android
Diapositiva sobre androidDiapositiva sobre android
Diapositiva sobre androidpexoxaprincess
 
Fundamentos del Desarrollo de Aplicaciones para Android
Fundamentos del Desarrollo de Aplicaciones para AndroidFundamentos del Desarrollo de Aplicaciones para Android
Fundamentos del Desarrollo de Aplicaciones para AndroidSantiago Márquez Solís
 

La actualidad más candente (12)

Exposición 20 aniversario linux
Exposición 20 aniversario linuxExposición 20 aniversario linux
Exposición 20 aniversario linux
 
Jose david arango correa tecnologia android
Jose david arango correa tecnologia androidJose david arango correa tecnologia android
Jose david arango correa tecnologia android
 
Android
AndroidAndroid
Android
 
Android
AndroidAndroid
Android
 
Tecnología android
Tecnología androidTecnología android
Tecnología android
 
software
softwaresoftware
software
 
"Android de la A a la Z" -- Unidad 1
"Android de la A a la Z" -- Unidad 1"Android de la A a la Z" -- Unidad 1
"Android de la A a la Z" -- Unidad 1
 
android evolution
android evolutionandroid evolution
android evolution
 
Mi colegio por siempre
Mi colegio por siempreMi colegio por siempre
Mi colegio por siempre
 
Diapositiva sobre android
Diapositiva sobre androidDiapositiva sobre android
Diapositiva sobre android
 
Fundamentos del Desarrollo de Aplicaciones para Android
Fundamentos del Desarrollo de Aplicaciones para AndroidFundamentos del Desarrollo de Aplicaciones para Android
Fundamentos del Desarrollo de Aplicaciones para Android
 
Curso desarrollo en android
Curso desarrollo en androidCurso desarrollo en android
Curso desarrollo en android
 

Destacado

Cardenas uchima duque_monitores_180604 (1)
Cardenas uchima duque_monitores_180604 (1)Cardenas uchima duque_monitores_180604 (1)
Cardenas uchima duque_monitores_180604 (1)nidiau
 
Sample Powerpoint Presentation
Sample Powerpoint PresentationSample Powerpoint Presentation
Sample Powerpoint Presentationteachdna
 
Proyecto 5 SEGURIDAD ACTIVA: SO Y APPS
Proyecto 5 SEGURIDAD ACTIVA: SO Y APPSProyecto 5 SEGURIDAD ACTIVA: SO Y APPS
Proyecto 5 SEGURIDAD ACTIVA: SO Y APPSjavipiris
 
Android User Interface
Android User InterfaceAndroid User Interface
Android User InterfaceDanny Fürniß
 
Conceptosbasicosderedeseinternet 110930211849-phpapp01
Conceptosbasicosderedeseinternet 110930211849-phpapp01Conceptosbasicosderedeseinternet 110930211849-phpapp01
Conceptosbasicosderedeseinternet 110930211849-phpapp01Fabian Martinez
 

Destacado (9)

Cardenas uchima duque_monitores_180604 (1)
Cardenas uchima duque_monitores_180604 (1)Cardenas uchima duque_monitores_180604 (1)
Cardenas uchima duque_monitores_180604 (1)
 
Practica 9 equipo14
Practica 9 equipo14Practica 9 equipo14
Practica 9 equipo14
 
Sample Powerpoint Presentation
Sample Powerpoint PresentationSample Powerpoint Presentation
Sample Powerpoint Presentation
 
Proyecto 5 SEGURIDAD ACTIVA: SO Y APPS
Proyecto 5 SEGURIDAD ACTIVA: SO Y APPSProyecto 5 SEGURIDAD ACTIVA: SO Y APPS
Proyecto 5 SEGURIDAD ACTIVA: SO Y APPS
 
Trabajo de sistemas
Trabajo de  sistemasTrabajo de  sistemas
Trabajo de sistemas
 
Yorlan martinez
Yorlan martinezYorlan martinez
Yorlan martinez
 
Bienvenido
BienvenidoBienvenido
Bienvenido
 
Android User Interface
Android User InterfaceAndroid User Interface
Android User Interface
 
Conceptosbasicosderedeseinternet 110930211849-phpapp01
Conceptosbasicosderedeseinternet 110930211849-phpapp01Conceptosbasicosderedeseinternet 110930211849-phpapp01
Conceptosbasicosderedeseinternet 110930211849-phpapp01
 

Similar a 12j sistemaandroid texto

Similar a 12j sistemaandroid texto (20)

Android p
Android pAndroid p
Android p
 
Android
AndroidAndroid
Android
 
Sistema Operativo Android
Sistema Operativo AndroidSistema Operativo Android
Sistema Operativo Android
 
Sistema Operativo Android
Sistema Operativo AndroidSistema Operativo Android
Sistema Operativo Android
 
Androidoriiginal
AndroidoriiginalAndroidoriiginal
Androidoriiginal
 
Revista
RevistaRevista
Revista
 
Ilovepdf.com
Ilovepdf.comIlovepdf.com
Ilovepdf.com
 
Ilovepdf.com (1)
Ilovepdf.com (1)Ilovepdf.com (1)
Ilovepdf.com (1)
 
Revista
RevistaRevista
Revista
 
Tecnología androide
Tecnología androideTecnología androide
Tecnología androide
 
Tecnología androide
Tecnología androideTecnología androide
Tecnología androide
 
Android
AndroidAndroid
Android
 
Android
AndroidAndroid
Android
 
Android y samsung
Android y samsungAndroid y samsung
Android y samsung
 
Android y leopard
Android y leopardAndroid y leopard
Android y leopard
 
Android maria
Android mariaAndroid maria
Android maria
 
Sistemas operativos-moviles-terminado
Sistemas operativos-moviles-terminadoSistemas operativos-moviles-terminado
Sistemas operativos-moviles-terminado
 
Terminado,sistmas operativos
Terminado,sistmas operativosTerminado,sistmas operativos
Terminado,sistmas operativos
 
Android
AndroidAndroid
Android
 
Introducción a la programación androide
Introducción a la programación androideIntroducción a la programación androide
Introducción a la programación androide
 

12j sistemaandroid texto

  • 1. Visión general del Sistema Operativo Android Diseño y evaluación de configuraciones 3º I.T. Informática de Sistemas Jose Luis Carmona Tamayo Jose Fco Bravo Sánchez 2012
  • 2.
  • 3. Visión general del Sistema Operativo Android ¿Que es Android? Android es un Sistema Operativo diseñado en un inicio para su utilización en dispositivos móviles, pero que gracias a su diseño ha permitido que sea utilizado en otros dispositos tales como TV Boxs (Woxter Android TV 100), micro-Pcs (Android MK802), netpcs, reproductores multimedia etc. Android es desarrollado por la Open Handset Alliance, encargada de desarrollar estándares abiertos para dispositivos móviles, y que esta compuesta por 84 compañías entre las que se encuentran Google, HTC, Dell, Intel, Motorola, etc. Un poco de historia El sistema operativo Android empezó a desarrollarse por una compañía de software llamada Android Inc, situada en Palo Alto y fundada por Andy Rubin, Rich Miner, Nick Sears, y Chris White. Esta compañía fue comprada por Google en 2005, como parte de su estrategia de entrar en el mundo del desarrollo de software para dispositivos móviles. En 2006 y 2007 fue cuando Google comenzó a ofrecer sericios tales como Google Maps Mobile, Gmail Mobile, Google Search o Google SMS, para los sistemas Java ME, Symbian o Blackberry. Fue entonces cuando Google se encontró con el problema de la lentitud de los dispositivos que en ese momento utilizaban mayoritariamente Java ME. En 2007 se creó la Open Handset Alliance liderada por Google, y cuyo objetivo es acelerar la innovación en los dispositivos móviles, ofrecer a los clientes una experiencia móvil mejor, maás barata y mas rica. Este organismo apostó por por Android como Sistema Operativo para uso en dispositivos móviles, y erigió este Sistema Operativo como la primera plataforma móvil completa, abierta y libre del mercado. Caracteristicas El Sistema Operativo Android, esta compuesto de un núcleo Linux, sobre el cual se han desarollado unas librerías, y una Maquina Virtual Java llamada Dalvik sobre la cual se creó un Framework de aplicaciones y sobre el que se ejcutan las aplicaciones Android. Las principales características de Android son: Framework propio para el desarrollo de aplicaciones, lo cual permite la reutilización y el reemplazo de componentes. Jose Luis Carmona Tamayo Jose Francisco Bravo Sánchez 3
  • 4. Visión general del Sistema Operativo Android Maquina virtual Java propietaria desarrollada por Dan Bornstein, la cuál está optimizada para requerir poca memoria y está diseñada para permitir ejecutar varias instancias de la máquina virtual simultáneamente. Browser integrado basado en el motor open source WebKit. Librerías gráficas 2D y 3D basadas en la especificación OpenGL ES 1.0 Base de datos relacional SQLite. Soporte de distintos formatos de audio y video tales como MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF. Soporte de Telefonía GSM Soporte de Bluetooth, EDGE, 3G, and WiFi. Soporte para el manejo de cámara, GPS, y acelerómetro Soporte para el desarrollo de aplicaciones incluyendo un emulador, herramientas para el debugging, herramientas para el profiling de memoria y rendimiento así como de un plugin para el entorno de desarrollo Eclipse. Jose Luis Carmona Tamayo Jose Francisco Bravo Sánchez 4
  • 5. Visión general del Sistema Operativo Android Arquitectura del Sistema Operativo Android La arquitectura usada por el Sistema Operativo Android la podemos dividir en capas, cada una con una misión específica dentro de la plataforma. Linux kernel Esta capa de la plataforma Android, tiene como misión abstraer el hardware del resto de la plataforma. Esta basada en la versión del kernel 2.6 de Linux, y proporciona a Android servicios básicos tales como seguridad, gestión de memoria, gestión de procesos, drivers, y capa de red entre otros. Un ejemplo del auge que esta teniendo Android en la comunidad open source, es el hecho de que en la reciente liberación de la versión 3.3 del kernel de Linux, ya se incluye código específico de la plataforma Android. Jose Luis Carmona Tamayo Jose Francisco Bravo Sánchez 5
  • 6. Visión general del Sistema Operativo Android Android runtime Android proporciona un entorno de ejecución de aplicaciones basado en Java. Se trata de un subconjunto de las librerías del Core de Java, más una nueva máquina virtual Java desarrollada específicamente para Android, llamada Dalvik, y que permite entre otras cosas que cada aplicación corra en un proceso y que dicho proceso tenga su propia instancia de la máquina virtual Dalvik Dalvik es una maquina virtual desarrollada para la plataforma Android por Dan Bornstein, con aportaciones del equipo de desarrollo de Google. Lo más destacable de esta máquina virtual es la optimización para el bajo consumo de memoria, la posibilidad de que se ejecuten varias intancias de la misma máquina virtual al mismo tiempo, el aislamiento de procesos, y la gestión de hebras. En realidad Dalvik no es una máquina virtual puramente Java, ya que los bytecodes que utiliza no son bytecodes Java. La forma en la que trabaja es transformando las clases Java compiladas en un formato específico (.dex), mediante el uso de una utilidad incluida en el SDK de Android llamada dx. Estas clases en formato dex son las que luego son ejecutadas por Dalvik. Estos ficheros .dex junto con los demás resources son los que se comprimen en formato zip y forman la aplicación en formato apk (Android package). Librerías Además de los componentes descritos anteriormente en la plataforma Android se encuentran una serie de librerías escritas en C/C++ que son usadas por varios de los componentes de Android, y que además pueden ser utilizadas por los desarrolladores de aplicaciones a través del Framework de Aplicaciones de Android. Algunas de estas librerías son: Librería System C, es una implementación de C estandar basado en BSD especifíca para dispositivos con Linux embebido. Jose Luis Carmona Tamayo Jose Francisco Bravo Sánchez 6
  • 7. Visión general del Sistema Operativo Android Librerías multimedia, basadas en OpenCORE de Packet Video, y las cuales permiten reproducción, grabación de los formatos de audio, video e imágenes más populares, tales como, MPEG4, H.264, MP3, AAC, AMR, JPG, and PNG LibWebCore, es la librería que nos proporciona un motor para el browser de Android. SGL, libreria para el motor de gráficos 2D. Librerías 3D, son una implementación basadas en la API OpenGL ES 1.0, y que permite el uso tandto de la aceleración 3D por hardware como por software. SQLite, motor para base de datos relacionales ligero, y disponible para cualquiera de las apliaciones. Framework de Aplicaciones de Android Android nos proporciona un conjunto de conceptos, prácticas y criterios para el desarrollo de aplicaciones para la plataforma Android de forma más simple, homogénea, y optimizada. Para ello ha creado este framework que nos permite aislarnos en cierto de muchos de los detalles de bajo nivel en el desarrollo de aplicaciones. Eso no quiere decir que no tengamos acceso a las librerías explicadas anteriormente, al contrario tenemos un acceso directo a estas librerías pero de forma unificada, permitiendo una curva de aprendizaje mucho más rápida, y un desarrollo de aplicaciones más optimas y compactas. Básicamente esta capa nos permite ver una aplicación Android desde el punto de vista de desarrollo como una colección de Vistas, Proveedores de contenidos, Gestores de recursos, Gestores de notificaciones y Gestores de Actividad. Vistas (views), equivaldrían al interfaz de la aplicación. Proveedores de contenidos (contents providers) , permite a las aplicaciones acceder a datos de otras aplicaciones (p.e. contactos), o compartir datos propios. Jose Luis Carmona Tamayo Jose Francisco Bravo Sánchez 7
  • 8. Visión general del Sistema Operativo Android Gestores de recursos (resource managers), permite el acceso a recursos que no son código, tales como imágenes, ficheros, etc. Gestores de notificaciones (notification managers) , que permiten a las aplicaciones visualizar alertas personalizadas en la barra de estado. Gestores de actividad (activity managers), gestionan el ciclo de vida de las aplicaciones y provee una forma de navegación estándar dentro de las aplicaciones. Aplicaciones La última capa de la plataforma Android es la de Aplicación. Android viene con una serie de aplicaciones estándares, como clientes de email, calendarios, mapas, browsers, programa de SMS, las cuales han sido desarrolladas con el Framework de Aplicaciones de Android. En esta capa es en la que los desarrolladores de software trabajarían desarrollando sus propias aplicaciones. Una vez desarrolladas estas aplicaciones se pueden poner a disposición del público a través de repositorios tales como Google Play. Jose Luis Carmona Tamayo Jose Francisco Bravo Sánchez 8
  • 9. Visión general del Sistema Operativo Android Seguridad en la plataforma Android Para el sistema operativo Android, la seguridad es uno de los puntos claves dentro de su desarrollo. El concepto de seguridad lo establece en base a la protección de los datos de usuario, protección de los recursos del sistema, protección respecto a las aplicaciones. Para lograr estos objetivos, Android proporciona una serie de características para hacer que sea un sistema robusto. Entre estas características podemos destacar, la robustez a nivel de sistema operativo que lleva implícito el uso de un kernel Linux, el uso de sandbox obligatorio para todas las aplicaciones, seguridad en la comunicación entre procesos, firmado de aplicaciones, y el uso de permisos a nivel de usuario. Además de esto, a nivel de plataforma, cada uno de los componentes se basa en la seguridad de los componentes del nivel inferior de la plataforma y en que a excepción de una pequeña porción de código del SO que es ejecutado en modo root, todo el código del kernel de Linux esta restringida por la ejecución dentro de la Sandbox. Seguridad a nivel de sistema operativo A nivel de Sistema Operativo Android utiliza la seguridad que provee el kernel de Linux, seguridad en la comunicación inter-procesos, para porporcionar seguridad entre aplicaciones ejecutándose en distintos procesos, y la ejecución de las aplicaciones dentro de una Sandbox. Seguridad Linux Por el mero hecho de usar Linux como nucleo de la plataforma, se heredan una serie de mecanismos de seguridad ampliamente probados por el gran uso de Linux en entornos especialmente sensibles a los temas de seguridad. Esto le proporciona a Android los siguientes beneficios: Un modelo de permisos basados en usuarios Aislamiento de procesos Mecanismos de securización de comunicaciones entre procesos La posibilidad de eliminar partes innecesarias y potencialmente inseguras del kernel Jose Luis Carmona Tamayo Jose Francisco Bravo Sánchez 9
  • 10. Visión general del Sistema Operativo Android Como sistema operativo multiusuario, uno de los objetivos básicos de seguridad de Linux es proteger los recursos de un usuario frente a otro. La Sandbox de aplicaciones A diferencia de los sistemas Linux, el sistema Android asigna un único user ID (UID) a cada una de las aplicaciones y la ejecuta como ese usuario en un proceso separado. Esto hace que cada aplicación se ejecute en una Sandbox, ya el kernel de Linux facilita la seguridad entre aplicaciones que ejecuta cada usuario, limitando que las aplicaciones puedan enteractuar entre ellas y con el sistema operativo. Como este Sandbox se encuentra a nivel de Kernel, todas las aplicaciones del kernel y de niveles superiores se ejecutaran dentro de este Sandbox por defecto. Permisos del sistema de ficheros En sistemas Unix los permisos del sistema de ficheros aseguran que un usuario no pueda leer o cambiar los ficheros de otro usuario. La ejecución de cada aplicación con un UID distinto hace que los ficheros generados por cada aplicación no puedan ser utilizados por otra aplicación a menos que explícitamente el desarollador permita esto. Protección por contraseña Android se uede configurar para que se verifique una contraseña cada vez que se acceda al dispositivo. Esto permite prevenir el acceso no autorizado tanto al dispositivo como a la clave criptográfica para sistemas de ficheros encriptados. Mejoras de seguridad en la gestión de memoria Android ha añadido una serie de mejoras en la gestión de la memoria para prevenir la posible utilización de exploits en el sistema. Alguna de estas mejoras son: Address Space Layout Randomization (ASLR) para que la localización de claves en memoria se situen de forma aleatoria no siempre en la misma posición. Jose Luis Carmona Tamayo Jose Francisco Bravo Sánchez 10
  • 11. Visión general del Sistema Operativo Android Hardware-based No eXecute (NX) para prevenir la ejecución de código en la pila y en el heap. safe_iop para reducer overflows de enteros Extensiones a OpenBSD dlmalloc para prevenir vulnerabilidades existentes. OpenBSD calloc para prevenir overflows de enteros durante la reserve de memoria. Rooteo de dispositivos Por defecto en dispositivos Android solamente el kernel y un subconjunto de aplicaciones se ejecutan en modo root. Android no limita la modificación del kernel, sistema opeativo u otros programas si se accede con usuario root. Por defecto los usuarios no tienen acceso al dispositivo con un usuario root, lo cual hace que de esto un mecanismo de seguridad. Hay ciertos programas que permiten desblquear esta limitación haciendo que se use el dispositivo con permisos root, lo cual indirectamente puede hacer que el dispositvo se convierta en un dispositivo no seguro. Seguridad a nivel de aplicación Además de los mecanismos de seguridad proporcionados a nivel de sistema operativo, Android proporciona unos mecanismos para proveer seguridad a nivel de aplicación. A continuación se explican estos mecanismos. El modelo de permisos de Android: APIs de Protección de acceso Una aplicación Android solamente puede tener acceso a un rango limitado de recursos del sistema. El sistema gestiona el acceso de las aplicaciones a estos recursos, ya que se podrían utilizar de forma maliciosa o inapropiada, lo cual podría provocar problemas para el usuario, sus datos, etc. Estas restricciones se implementan de distintas formas, desde la ausencia de APIs para el manejo de estos recursos (p.e. acceso a la tarjeta SIM), hasta el uso de APIS protegidas mediante Permisos. Estas APIs protegidas incluyen: Funciones de camara Jose Luis Carmona Tamayo Jose Francisco Bravo Sánchez 11
  • 12. Visión general del Sistema Operativo Android Datos de localización (GPS) Funciones bluetooth Funciones de telefonía Funciones SMS/MMS Conexiones de datos y de red Estas recursos son accesibles únicamente desde el Sistema Operativo. Para que una aplicación pueda usar estos recursos debe declararlo en el manifiest de la aplicación. Cuando un usuario instala la aplicación se le mostrará los permisos que requiere esa aplicación y será el usuario el que permita la ejecución de dicha aplicación que llevará implícito el uso de estas APIs. El permiso de uso de esta API es solamente a nivel de esa aplicación, una vez que se desinstalen los permisos de esas aplicación desaparecen y si el usuario vuelve a instalar la aplicación se le volverá a pedir autorización para el acceso a estas APIs. Comunicación entre procesos Los distintos procesos pueden comunicarse entre ellos utilizando mecanismos propios de UNIX tales como señales, sockets, etc. Android además añade mecanismos IPC. Binder mecanismo ligero de llamada a procedimientos remotos diseñados para alto rendimiento cuando se realizan llamadas locales. Se relizan mediante la creación de un driver. Service provee interaces accesibles directamente desde el binder. Intents es un simple objeto que contiene un mensaje expresando la intención de realizar una acción. ContentProviders es un almacen de datos que provee acceso a los datos del dispositivo (p.e. lista de contactos). Un aplicación puede acceder a los datos de otra aplicación que haya expuesto sus datos mediante la creación de un ContentProvider. Jose Luis Carmona Tamayo Jose Francisco Bravo Sánchez 12
  • 13. Visión general del Sistema Operativo Android Firmado de aplicaciones El firmado de aplicaciones es la forma de identificar el autor de la aplicación, y de esta forma permitir las actualizaciones de las aplicaciones sin mecanismos complejos de verificación de propiedad del autor. Cada aplicación en la plataforma Android debe estar firmada y cualquier intento de subir una aplicación a Google Play sin firmar será rechazado. Cuando una aplicación se instala en un dispositivo Android se comprueba que dicha aplicación esta correctamente firmada por el certificado incluido en el APK. Jose Luis Carmona Tamayo Jose Francisco Bravo Sánchez 13
  • 14. Visión general del Sistema Operativo Android Desarrollo de aplicaciones Dalvik SDK NDK Versiones de la plataforma Cuando se desarrolla en la plataforma Android hay que tener claro el concepto de “nivel de API”. El nivel de API es un valor que identifica de forma única la revisión del API del Framework especifica para una determinada versión de la plataforma Android. Es decir que si queremos que nuestra aplicación sea compatible con una determinada versión de la plataforma Android tendremos que tener en cuenta el API level para esa determinada versión. A continuación se muestra una tabla con un resumen de los codenames y API level Code name Version API level (no code name) 1.0 API level 1 (no code name) 1.1 API level 2 Cupcake 1.5 API level 3, NDK 1 Donut 1.6 API level 4, NDK 2 Eclair 2.0 API level 5 Eclair 2.0.1 API level 6 Eclair 2.1 API level 7, NDK 3 Froyo 2.2.x API level 8, NDK 4 Gingerbread 2.3 - 2.3.2 API level 9, NDK 5 Gingerbread 2.3.3 - 2.3.7 API level 10 Honeycomb 3.0 API level 11 Honeycomb 3.1 API level 12, NDK 6 Honeycomb 3.2.x API level 13 IceCreamSandwich 4.0.1 - 4.0.2 API level 14, NDK 7 Jose Luis Carmona Tamayo Jose Francisco Bravo Sánchez 14
  • 15. Visión general del Sistema Operativo Android Code name Version API level IceCreamSandwich 4.0.3 - 4.0.4 API level 15 Jose Luis Carmona Tamayo Jose Francisco Bravo Sánchez 15
  • 16. Visión general del Sistema Operativo Android Recursos http://developer.android.com http://source.android.com http://es.wikipedia.org/wiki/Android http://es.wikipedia.org/wiki/Open_Handset_Alliance http://www.businessweek.com/technology/content/aug2005/tc20050817_0949_tc024.htm http://www.techradar.com/news/phone-and-communications/mobile-phones/a-complete-history-of-android- 470327 http://investing.businessweek.com/research/stocks/private/snapshot.asp?privcapId=23584687 http://es.wikipedia.org/wiki/Dalvik http://www.webkit.org/ http://www.dalvikvm.com/ http://www.ibm.com/developerworks/xml/library/x-androidsecurity/index.html Jose Luis Carmona Tamayo Jose Francisco Bravo Sánchez 16