Your SlideShare is downloading. ×
12j sistemaandroid texto
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

12j sistemaandroid texto

106
views

Published on


0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
106
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Visión general delSistema OperativoAndroidDiseño y evaluación de configuraciones3º I.T. Informática de SistemasJose Luis Carmona TamayoJose Fco Bravo Sánchez2012
  • 2. 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 asu 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 paradispositivos móviles, y que esta compuesta por 84 compañías entre las que se encuentran Google, HTC, Dell, Intel,Motorola, etc.Un poco de historiaEl sistema operativo Android empezó a desarrollarse por una compañía de software llamada Android Inc, situada enPalo Alto y fundada por Andy Rubin, Rich Miner, Nick Sears, y Chris White. Esta compañía fue comprada por Googleen 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 seencontró con el problema de la lentitud de los dispositivos que en ese momento utilizaban mayoritariamente JavaME.En 2007 se creó la Open Handset Alliance liderada por Google, y cuyo objetivo es acelerar la innovación en losdispositivos móviles, ofrecer a los clientes una experiencia móvil mejor, maás barata y mas rica. Este organismoapostó por por Android como Sistema Operativo para uso en dispositivos móviles, y erigió este Sistema Operativocomo la primera plataforma móvil completa, abierta y libre del mercado.CaracteristicasEl Sistema Operativo Android, esta compuesto de un núcleo Linux, sobre el cual se han desarollado unas librerías, yuna Maquina Virtual Java llamada Dalvik sobre la cual se creó un Framework de aplicaciones y sobre el que seejcutan 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
  • 3. Visión general del Sistema Operativo AndroidMaquina virtual Java propietaria desarrollada por Dan Bornstein, la cuál está optimizada para requerir poca memoriay 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.0Base 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 GSMSoporte de Bluetooth, EDGE, 3G, and WiFi.Soporte para el manejo de cámara, GPS, y acelerómetroSoporte para el desarrollo de aplicaciones incluyendo un emulador, herramientas para el debugging, herramientaspara 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
  • 4. Visión general del Sistema Operativo AndroidArquitectura del Sistema Operativo AndroidLa arquitectura usada por el Sistema Operativo Android la podemos dividir en capas, cada una con una misiónespecífica dentro de la plataforma.Linux kernelEsta capa de la plataforma Android, tiene como misión abstraer el hardware del resto de la plataforma. Esta basadaen la versión del kernel 2.6 de Linux, y proporciona a Android servicios básicos tales como seguridad, gestión dememoria, 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 recienteliberació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
  • 5. Visión general del Sistema Operativo AndroidAndroid runtimeAndroid proporciona un entorno de ejecución de aplicaciones basado en Java. Se trata de un subconjunto de laslibrerías del Core de Java, más una nueva máquina virtual Java desarrollada específicamente para Android, llamadaDalvik, y que permite entre otras cosas que cada aplicación corra en un proceso y que dicho proceso tenga su propiainstancia de la máquina virtualDalvikDalvik es una maquina virtual desarrollada para la plataforma Android por Dan Bornstein, con aportaciones delequipo 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 deque se ejecuten varias intancias de la misma máquina virtual al mismo tiempo, el aislamiento de procesos, y lagestión de hebras.En realidad Dalvik no es una máquina virtual puramente Java, ya que los bytecodes que utiliza no son bytecodesJava. 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ásresources son los que se comprimen en formato zip y forman la aplicación en formato apk (Android package).LibreríasAdemás de los componentes descritos anteriormente en la plataforma Android se encuentran una serie de libreríasescritas en C/C++ que son usadas por varios de los componentes de Android, y que además pueden ser utilizadas porlos desarrolladores de aplicaciones a través del Framework de Aplicaciones de Android. Algunas de estas libreríasson:Librería System C, es una implementación de C estandar basado en BSD especifíca para dispositivos con Linuxembebido.Jose Luis Carmona Tamayo Jose Francisco Bravo Sánchez 6
  • 6. Visión general del Sistema Operativo AndroidLibrerías multimedia, basadas en OpenCORE de Packet Video, y las cuales permiten reproducción, grabación de losformatos de audio, video e imágenes más populares, tales como, MPEG4, H.264, MP3, AAC, AMR, JPG, and PNGLibWebCore, 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ón3D por hardware como por software.SQLite, motor para base de datos relacionales ligero, y disponible para cualquiera de las apliaciones.Framework de Aplicaciones de AndroidAndroid nos proporciona un conjunto de conceptos, prácticas y criterios para el desarrollo de aplicaciones para laplataforma Android de forma más simple, homogénea, y optimizada. Para ello ha creado este framework que nospermite 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 accesodirecto a estas librerías pero de forma unificada, permitiendo una curva de aprendizaje mucho más rápida, y undesarrollo 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 unacolección de Vistas, Proveedores de contenidos, Gestores de recursos, Gestores de notificaciones y Gestores deActividad.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
  • 7. Visión general del Sistema Operativo AndroidGestores 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 alertaspersonalizadas en la barra de estado.Gestores de actividad (activity managers), gestionan el ciclo de vida de las aplicaciones y provee una forma denavegación estándar dentro de las aplicaciones.AplicacionesLa ú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 elFramework de Aplicaciones de Android.En esta capa es en la que los desarrolladores de software trabajarían desarrollando sus propias aplicaciones. Una vezdesarrolladas estas aplicaciones se pueden poner a disposición del público a través de repositorios tales comoGoogle Play.Jose Luis Carmona Tamayo Jose Francisco Bravo Sánchez 8
  • 8. Visión general del Sistema Operativo AndroidSeguridad en la plataforma AndroidPara el sistema operativo Android, la seguridad es uno de los puntos claves dentro de su desarrollo. El concepto deseguridad 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 deun kernel Linux, el uso de sandbox obligatorio para todas las aplicaciones, seguridad en la comunicación entreprocesos, 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 componentesdel nivel inferior de la plataforma y en que a excepción de una pequeña porción de código del SO que es ejecutadoen 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 operativoA nivel de Sistema Operativo Android utiliza la seguridad que provee el kernel de Linux, seguridad en lacomunicación inter-procesos, para porporcionar seguridad entre aplicaciones ejecutándose en distintos procesos, yla ejecución de las aplicaciones dentro de una Sandbox.Seguridad LinuxPor el mero hecho de usar Linux como nucleo de la plataforma, se heredan una serie de mecanismos de seguridadampliamente probados por el gran uso de Linux en entornos especialmente sensibles a los temas de seguridad. Estole proporciona a Android los siguientes beneficios:Un modelo de permisos basados en usuariosAislamiento de procesosMecanismos de securización de comunicaciones entre procesosLa posibilidad de eliminar partes innecesarias y potencialmente inseguras del kernelJose Luis Carmona Tamayo Jose Francisco Bravo Sánchez 9
  • 9. Visión general del Sistema Operativo AndroidComo sistema operativo multiusuario, uno de los objetivos básicos de seguridad de Linux es proteger los recursos deun usuario frente a otro.La Sandbox de aplicacionesA diferencia de los sistemas Linux, el sistema Android asigna un único user ID (UID) a cada una de las aplicaciones y laejecuta como ese usuario en un proceso separado. Esto hace que cada aplicación se ejecute en una Sandbox, ya elkernel de Linux facilita la seguridad entre aplicaciones que ejecuta cada usuario, limitando que las aplicacionespuedan 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 seejecutaran dentro de este Sandbox por defecto.Permisos del sistema de ficherosEn sistemas Unix los permisos del sistema de ficheros aseguran que un usuario no pueda leer o cambiar los ficherosde otro usuario. La ejecución de cada aplicación con un UID distinto hace que los ficheros generados por cadaaplicación no puedan ser utilizados por otra aplicación a menos que explícitamente el desarollador permita esto.Protección por contraseñaAndroid se uede configurar para que se verifique una contraseña cada vez que se acceda al dispositivo. Esto permiteprevenir el acceso no autorizado tanto al dispositivo como a la clave criptográfica para sistemas de ficherosencriptados.Mejoras de seguridad en la gestión de memoriaAndroid ha añadido una serie de mejoras en la gestión de la memoria para prevenir la posible utilización de exploitsen el sistema. Alguna de estas mejoras son: Address Space Layout Randomization (ASLR) para que la localización de claves en memoria se situen de formaaleatoria no siempre en la misma posición.Jose Luis Carmona Tamayo Jose Francisco Bravo Sánchez 10
  • 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 dispositivosPor 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 mecanismode seguridad. Hay ciertos programas que permiten desblquear esta limitación haciendo que se use el dispositivo conpermisos root, lo cual indirectamente puede hacer que el dispositvo se convierta en un dispositivo no seguro.Seguridad a nivel de aplicaciónAdemás de los mecanismos de seguridad proporcionados a nivel de sistema operativo, Android proporciona unosmecanismos 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 accesoUna aplicación Android solamente puede tener acceso a un rango limitado de recursos del sistema. El sistemagestiona 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 camaraJose Luis Carmona Tamayo Jose Francisco Bravo Sánchez 11
  • 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 redEstas recursos son accesibles únicamente desde el Sistema Operativo. Para que una aplicación pueda usar estosrecursos debe declararlo en el manifiest de la aplicación. Cuando un usuario instala la aplicación se le mostrará lospermisos 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 esasaplicación desaparecen y si el usuario vuelve a instalar la aplicación se le volverá a pedir autorización para el acceso aestas APIs.Comunicación entre procesosLos 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 realizanllamadas 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). Unaplicación puede acceder a los datos de otra aplicación que haya expuesto sus datos mediante la creación de unContentProvider.Jose Luis Carmona Tamayo Jose Francisco Bravo Sánchez 12
  • 12. Visión general del Sistema Operativo AndroidFirmado de aplicacionesEl firmado de aplicaciones es la forma de identificar el autor de la aplicación, y de esta forma permitir lasactualizaciones de las aplicaciones sin mecanismos complejos de verificación de propiedad del autor. Cada aplicaciónen 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 correctamentefirmada por el certificado incluido en el APK.Jose Luis Carmona Tamayo Jose Francisco Bravo Sánchez 13
  • 13. Visión general del Sistema Operativo AndroidDesarrollo de aplicaciones Dalvik SDK NDKVersiones de la plataformaCuando se desarrolla en la plataforma Android hay que tener claro el concepto de “nivel de API”. El nivel de API esun valor que identifica de forma única la revisión del API del Framework especifica para una determinada versión dela plataforma Android. Es decir que si queremos que nuestra aplicación sea compatible con una determinada versiónde 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 2Cupcake 1.5 API level 3, NDK 1Donut 1.6 API level 4, NDK 2Eclair 2.0 API level 5Eclair 2.0.1 API level 6Eclair 2.1 API level 7, NDK 3Froyo 2.2.x API level 8, NDK 4Gingerbread 2.3 - 2.3.2 API level 9, NDK 5Gingerbread 2.3.3 - 2.3.7 API level 10Honeycomb 3.0 API level 11Honeycomb 3.1 API level 12, NDK 6Honeycomb 3.2.x API level 13IceCreamSandwich 4.0.1 - 4.0.2 API level 14, NDK 7Jose Luis Carmona Tamayo Jose Francisco Bravo Sánchez 14
  • 14. Visión general del Sistema Operativo Android Code name Version API levelIceCreamSandwich 4.0.3 - 4.0.4 API level 15Jose Luis Carmona Tamayo Jose Francisco Bravo Sánchez 15
  • 15. Visión general del Sistema Operativo AndroidRecursoshttp://developer.android.comhttp://source.android.comhttp://es.wikipedia.org/wiki/Androidhttp://es.wikipedia.org/wiki/Open_Handset_Alliancehttp://www.businessweek.com/technology/content/aug2005/tc20050817_0949_tc024.htmhttp://www.techradar.com/news/phone-and-communications/mobile-phones/a-complete-history-of-android-470327http://investing.businessweek.com/research/stocks/private/snapshot.asp?privcapId=23584687http://es.wikipedia.org/wiki/Dalvikhttp://www.webkit.org/http://www.dalvikvm.com/http://www.ibm.com/developerworks/xml/library/x-androidsecurity/index.htmlJose Luis Carmona Tamayo Jose Francisco Bravo Sánchez 16