Arquitectura, aplicaciones y seguridad en Android

4,956 views
4,655 views

Published on

Charla: Arquitectura, aplicaciones y seguridad en Android, impartida por Antonio Díaz de Informática 64 en el curso de Especialización en Dispositivos Móviles que tuvo lugar en la Facultad de Informática de la Universidad de A Coruña del 20 al 22 de Junio de 2012.

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
4,956
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
362
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Arquitectura, aplicaciones y seguridad en Android

  1. 1. Android
  2. 2. Evolución de los androides1970-1980 1980-1990 1990-2000 2000-2010
  3. 3. Androide 2010-? Andy
  4. 4. ¿Qué es exactamente Android?• Sistema operativo móvil basado en Linux• Utilizado en dispositivos móviles – Principalmente Smartphones de diversas empresas • Sony • HTC • Motorola • Samsung • Huawei • LG • …
  5. 5. ¿Qué es exactamente Android?• Sistema operativo móvil basado en Linux• Utilizado en dispositivos móviles – Aunque también en tablets
  6. 6. ¿Qué es exactamente Android?• Sistema operativo móvil basado en Linux• Utilizado en dispositivos móviles – Y en otros dispositivos, como auriculares, relojes, netbooks, etcétera.
  7. 7. ¿Cómo empezó todo?• En 2003 Andrew Rubin deja Danger Inc.• En octubre del 2003 – Andrew Rubin y tres compañeros fundan Android Inc. en California. • Se convierte en una “startup”. • Se vuelca en el desarrollo de software para teléfonos móviles – Por aquel entonces Schwarzenegger es elegido gobernador California.
  8. 8. ¿Cómo empezó todo?• En mayo del 2005 Google adquiere Dodgeball• En julio del 2005 Google adquiere Android Inc por 50 millones de $.• Rumores sobre la incursión de Google en el mundo de la telefonía móvil.• Por aquel entonces el huracán Katrina devasta el sur de Estados Unidos
  9. 9. ¿Cómo empezó todo?• El 5 de noviembre de 2007 se funda OHA (Open Handset Alliance) – Operadores – Compañías de software – Compañías de comercialización – Fabricantes de semiconductores – Fabricantes de dispositivos
  10. 10. ¿Cómo empezó todo?• También el 5 de noviembre de 2007 se da a conocer una plataforma para móviles basada en Linux.• El 12 de noviembre se “libera” el “kit de desarrollo de aplicaciones”. Nacen las apps.• Por aquel entonces ocurrió el famoso “¿Por qué no te callas?”
  11. 11. Etimología y logotipo• ¿Sueñan los androides con ovejas eléctricas?• Nexus-6.23• ¿Videojuego Gauntlet: The Third Encounter?
  12. 12. Versiones de Android• El 22 de octubre de 2008 sale el primer móvil con Android. T-Mobile G1 – Widgets – Servicios de Google – Android Market – Finales de año en Europa• Por aquel entonces salió elegido presidente de EEUU Barack Obama
  13. 13. Versiones de Android• Versión 1.1. Primera actualización de Android – En febrero de 2009 – Cambios estéticos menores – Búsquedas de voz – Aplicaciones de pago en Android Market – Implementación de actualizaciones “over the air”• Por aquel entonces desapareció Marta del Castillo en Sevilla
  14. 14. Versiones de Android: Cupcake (v1.5)• Características – Magdalena glaseada – Nivel de API: 3 – Cuota de mercado actual: 0’3% – Fecha de salida: 30/04/2009• Por aquel entonces murió Michel Jackson
  15. 15. Versiones de Android: Cupcake (v1.5)• Novedades – Widgets – Mejoras en el portapapeles – Captura y reproducción de video – Posibilidad de subir vídeos a YouTube y Picasa – Teclado virtual
  16. 16. Versiones de Android: Donut (v1.6)• Características – Rosquilla – Nivel de API: 4 – Cuota de mercado: 0’7% – Fecha de salida 15/09/2009• Por aquel entonces Joao Barroso fue elegido presidente de la Comisión Europea
  17. 17. Versiones de Android: Donut (v1.6)• Novedades – Soporte para redes CDMA – Múltiples resoluciones de pantalla – Búsqueda rápida – Nuevo Market – Introducción de aplicaciones – Nueva interfaz de la cámara
  18. 18. Versiones de Android: Éclair (v2.0/v2.1)• Características – Pepito – Nivel de API: 7 – Cuota de mercado: 6% – Fecha de salida: 26/10/2009• Por aquel entonces fue secuestrado el buque Alakrana
  19. 19. Versiones de Android: Éclair (v2.0/v2.1)• Novedades – Apoyo de varias cuentas – Google Maps Navigation – Contacto rápido – Soporte HTML5 – Fondos de pantalla animados – De voz a texto – Nueva pantalla de bloqueo
  20. 20. Versiones de Android: Éclair (v2.0/v2.1)• Nexus One – Primer smartphone de Google – Fabricado por HTC Corporation – Fue lanzado al mercado el 5 de enero de 2010 a 529$ – La familia del fallecido Philip K. Dick se planteó demandar a Google por llamar a su teléfono Nexus One,
  21. 21. Versiones de Android: Froyo (v2.2)• Características – Yogur helado – Nivel de API: 8 – Cuota de mercado: 23,1% – Fecha de salida: 20/05/2010• Por aquel entonces David Cameron fue elegido primer ministro del Reino Unido
  22. 22. Versiones de Android: Froyo (v2.2)• Novedades – Pantalla de inicio rediseñada – Galería rediseñada con imágenes 3D – Hostpot móvil (compartir conexión 3G) – Posibilidad de contraseña en la pantalla de bloqueo
  23. 23. Versiones de Android: Gingerbread (v2.3)• Características – Pan de jengibre – Nivel de API: 9-10 – Cuota de mercado: 63,7% – Fecha de salida: 06/12/2010• Por aquel entonces comenzó la “revolución tunecina”
  24. 24. Versiones de Android: Gingerbread (v2.3)• Novedades – Mejor control de copiar y pegar – Teclado mejorado – Gestión de la batería – Herramientas de gestión de desarrollo – Soporte para cámara frontal – Otras características – Juegos
  25. 25. Versiones de Android: Honeycomb (v3.0/v3.1/v3.2)• Características – Panal – Nivel de API: 11-13 – Cuota de mercado: 3,3% – Fecha de salida: 10/05/2011• Por aquel entonces se anuncia la muerte de Bin Laden en Pakistán
  26. 26. Versiones de Android: Honeycomb (v3.0/v3.1/v3.2)• Novedades – Versión para tablets – Final de los botones físicos – Multitarea mejorada – Nueva barra de aplicaciones
  27. 27. Versiones de Android: Ice Cream Sandwich (v4.0)• Características – Sandwich de helado – Nivel de API: 14-15 – Cuota de mercado: 2’9% – Fecha de salida: 19/10/2011• Por aquel entonces ocurrió la erupción submarina en la isla de El Hierro
  28. 28. Versiones de Android: Ice Cream Sandwich (v4.0)• Novedades – NFC – Desbloqueo facial – Análisis de datos – Se puede modificar el tipo de letra – Actualización de la pantalla de notificaciones – Nuevo calendario y aplicaciones de correo electrónico
  29. 29. Versiones de Android: Jelly Bean(v4.1 o 5.0)• Lo que esperan los usuarios – Chrome como navegador predeterminado – El fin de la fragmentación. Que haya un estándar a la hora de desarrollar y producir dispositivos – Un competidor para Siri
  30. 30. Versiones de Android: Estadísticas de utilización 2.2 Froyo 20.90% 2.1 Eclair 5.50% 3.x.x Honeycomb Other 3.30% 1.6 Donut 14.70% 0.70%2.3.x Gingerbread 1.5 Cupcake 64.40% 0.30% 4.0.x Ice Cream 4.90%
  31. 31. Dispositivos AndroidEstadísticas y más estadísticas…
  32. 32. Dispositivos AndroidEstadísticas: Android superará a Windows
  33. 33. Versiones de Smartphones:Estadísticas (miles de unidades)
  34. 34. Arquitectura de Android
  35. 35. Arquitectura de Android• Kernel Linux – Versión 2.6 modificada de Linux – Capa de abstracción entre el hardware y el software – Contiene Drivers para el manejo del hardware del dispositivo – Adaptado por el fabricante para optimizar el funcionamiento del dispositivo
  36. 36. Arquitectura de Android• Android depende de Linux para los servicios base del sistema: – Modelo de controladores (drivers) – La seguridad – Gestión de memoria – Gestión de procesos – Pila de red
  37. 37. Arquitectura de Android• Librerías – El sistema de librerías está basado en la BSD (Berkeley Software Distribution) – Son librerías eficientes y ligeras, adaptadas a dispositivos móviles – Están escritas en C y C++
  38. 38. Arquitectura de Android• Librerías – Surface Manager: Administrador de ventanas – OpenGL|ES: Se encarga de la aceleración 3D – SGL: Maneja los gráficos en 2D – Media Framework: Incluye los codecs de video – FreeType: Maneja las fuentes del sistema – SSL: Posibilita la utilización de SSL para establecer comunicaciones seguras – SQLite: Creación de BBDD relacionales, pudiendo transformar estructuras de datos en objetos – WebKit: Proporciona el motor para las aplicaciones de tipo navegador – libc: Incluye las cabeceras y funciones según el estándar de C
  39. 39. Arquitectura de Android• Android Runtime. Entorno de ejecución, formado por – Core Libraries: • Librerías básicas programadas en C. • Funcionamiento elemental a bajo nivel. • Ejecuta aplicaciones (1 aplicación=1 proceso=1DVM) – Dalvik Virtual Machine: • Comparable a la JVM en su funcionamiento • Trabaja con ficheros .dex • Permite ejecutar varias instancias a la vez • No soporta todas las librerías de Java (AWT, Swing, ...)
  40. 40. Arquitectura de Android• Dalvik Virtual Machine: – Convierte los ficheros .class en .dex – Los .dex están comprimidos y consumen menos recursos. – Los .dex, son empaquetados en un .apk que es el que se distribuye en el dispositivo. – no ejecuta bytecode, sino registros
  41. 41. Arquitectura de AndroidConversión de ficheros .jar en .dex .java javac .clas JVM s dx .dex DVM .apk
  42. 42. Arquitectura de Android• Application Framework: – Proporciona una plataforma para el desarrollo y reutilización de componentes. – Se accede a las capas inferiores a través de Dalvik – Son los componentes Java con los que trabaja el desarrollador
  43. 43. Arquitectura de Android• Componentes del Application Framework: – Activity Manager: Gestiona el tiempo de ejecución en las aplicaciones. – Window Manager: Maneja las ventanas de las aplicaciones usando Surface Manager. – Content Providers: Comparte contenido entre aplicaciones. – View System: Construye un entorno gráfico para las aplicaciones. – Notification Manager: Comunica al usuario los distintos eventos que ocurran.
  44. 44. Arquitectura de Android• Componentes del Application Framework: – Package Manager: Obtiene información sobre los paquetes instalados en el dispositivo Android. – Telephony Manager: Se encarga de servicios de modem como sms, telefono, ... – Resource Manager: Gestiona los elementos de la aplicación que están fuera del código. – Location Manager: Relacionado con la información de posicionamiento. – XMPP Service: Maneja el protocolo de intercambio de mensajes basados en XML.
  45. 45. Arquitectura de Android• Applications – Están todas las aplicaciones del dispositivo – Contiene el lanzador del aplicaciones – Los widgets también son aplicaciones de esta capa. – Las aplicaciones están escritas en Java y pueden hacer uso de las otras capas
  46. 46. Arquitectura de Android• Applications – Las aplicaciones base incluyen: • Un cliente de correo electrónico • SMS • Calendario • Mapas • Navegador • Contactos • Otros
  47. 47. Tipos de aplicaciones Nativas: Categorías• La mayoría de aplicaciones se sitúan en una o dos categorías de las siguientes: - Aplicaciones primer plano (foregorund). - Aplicaciones en segundo plano (background). - Aplicaciones intermitentes (Intermittent). - Widgets, Live Wallpapers.
  48. 48. Tipos de aplicaciones Nativas: Son los llamados “Servicios de fondo” o “Intent Receivers “• Corren por detrás silenciosamente a la espera de un evento que las levante: Mensajes SMS, notificaciones de hardware, señal de otra aplicación.• Es posible crear aplicaciones no visibles, aunque conviene mostrar un cuadro de dialogo de configuración para que el usuario establezca si quiere que el servicio se ejecute en segundo plano.
  49. 49. Tipos de aplicaciones Nativas: Intermitentes• Combinan los dos tipos mencionados. Ejemplo de estas serían correo electrónico, mensajería, etc.
  50. 50. Tipos de aplicaciones Nativas: Wallpapers, Widgets• Estos componentes permiten comunicarse con el dispositivo sin necesidad de ejecutar una aplicación .• Acceden a diversas partes del terminal como el acelerómetro o la batería y responder ante eventos que reciban.• Pueden ser dinámicos o estáticos y mostrar diversa información como el consumo de batería, una fecha, el clima actual, etcétera.
  51. 51. Creación de aplicaciones Android• El lenguaje más extendido y documentado es Java.
  52. 52. Creación de aplicaciones Android• Alternativas a Java: HTML5 – Permite actualizaciones instantáneas. – Muy versátil. – Varias plataformas.
  53. 53. Creación de aplicaciones Android• Alternativas a Java: Appcelerator Titanium – Convierte código html/javascript a una aplicación casi nativa – Las aplicaciones de escritorio de Titanium deben ser implementadas en PHP, Ruby o Python, – Las aplicaciones para dispositivos móviles mediante HTML5 y javascript.
  54. 54. Creación de aplicaciones Android• Alternativas a Java: Rhomobile Rhodes – Framework basado en Ruby – La herramienta de desarrollo es Rhodes – Rhodes muestra componentes con apariencia similar a los nativos de cada plataforma – Rhodes interpreta el código escrito en Ruby para convertirlo a código nativo de cada plataforma, objectiveC para IPhone y Java para Android o Blackberry
  55. 55. Creación de aplicaciones Android• Alternativas a Java: Clojure – Lenguaje de programación multiparadigma. – Dialecto de lisp. – Compilable a Javascript. – Máquina Virtual de Java – Máquina virtual de .NET
  56. 56. Creación de aplicaciones Android• Alternativas a Java: PhoneGap – Framework para desarrollar en múltiples plataformas con lenguajes extendidos como: HTML5, CSS, JavaScript. – PhoneGap encapsula una aplicación web para que sea ejecutada como una aplicación nativa sea cual sea la plataforma móvil de destino. – El código de la aplicación utilizará las extendidas tecnologías html, javascript y CSS y se ejecuta utilizando el navegador web del dispositivo móvil. – PhoneGap aporta un enlace entre javacript y las APIs nativas del dispositivo móvil donde se está ejecutando la aplicación web.
  57. 57. Creación de aplicaciones Android• Alternativas a Java: Kawa, Mirah, Pindah… – Existen otras opciones no tan extendidas ni conocidas – Esto podría ser sólo el principio
  58. 58. Creación de aplicaciones Android• Alternativas a Java: Comparativa
  59. 59. Creación de aplicaciones Android• ¿Qué se necesita para crear aplicaciones con Java? – Compilador de Java (JDK ): http://www.oracle.com/technetwork/java%20/javase/downloads/i ndex.html
  60. 60. Creación de aplicaciones Android• ¿Qué se necesita para crear aplicaciones con Java? – Entorno de desarrollo 1: Eclipse http://www.eclipse.org/downloads/
  61. 61. Creación de aplicaciones Android• ¿Qué se necesita para crear aplicaciones con Java? – Plugin para Eclipse: http://dl-ssl.google.com/android/eclipse/
  62. 62. Creación de aplicaciones Android• ¿Qué se necesita para crear aplicaciones con Java? – Entorno de desarrollo 2: NetBeans http://www.netbeans.org/downloads/
  63. 63. Creación de aplicaciones Android• ¿Qué se necesita para crear aplicaciones con Java? – Plugin para NetBeans http://kenai.com/projects/nbandroid/downloads
  64. 64. Creación de aplicaciones Android• ¿Qué se necesita para crear aplicaciones con Java? – SDK de Android http://developer.android.com/sdk/index.html
  65. 65. Creación de aplicaciones Android• ¿Qué se necesita para crear aplicaciones con Java? – SDK de Android http://developer.android.com/sdk/index.html
  66. 66. Componentes de una aplicación• Activity• View• Service• Content Provider• Broadcast Intent Receiver• Intent• Widget
  67. 67. Componentes de una aplicación• Activity – Componente principal de la interfaz gráfica – Su contenido se indica mediante vistas – Es una clase donde se muestran las vistas – Cada Activity es independiente de las demás – Cuando se llaman entre sí, las actividades de introducen en una pila LIFO
  68. 68. Componentes de una aplicación• View – Son los componentes básicos con los que se construye la interfaz gráfica de la aplicación – Similar a AWT o Swing en Java – Todas heredan de android.view.View – Son el nexo entre las Activity y el usuario, ya que reciben los eventos.
  69. 69. Componentes de una aplicación• Service – Componentes sin interfaz gráfica – Se ejecutan en segundo plano – Similares a los servicios de un sistema operativo – Realizan diversas acciones – Heredan de la clase Service
  70. 70. Componentes de una aplicación• Content Provider – Comparte datos entre aplicaciones. – Al compartir datos no se muestran detalles sobre su estructura o forma de almacenamiento. – Heredan de la clase ContentProvider
  71. 71. Componentes de una aplicación• Broadcast Intent Receiver – Reacciona frente a mensajes emitidos por el sistema – Cada aplicación puede tener o emitir varios Broadcast Intent Receiver – No tienen interfaz gráfica asociada – No es necesario que la aplicación esté ejecutándose
  72. 72. Componentes de una aplicación• Intent – Principal elemento de comunicación entre los distintos componentes – Las aplicaciones responden a los intents – Los intents son objetos de la clase Intent, con los datos a transmitir
  73. 73. Componentes de una aplicación• Widget – Pequeña aplicación utilizada para facilitar el acceso a funciones frecuentes. – Son los llamados gadgets de escritorio – Se programa de distinta forma a como se hace con una aplicación normal.
  74. 74. Ciclo de vida de una aplicación• Está controlado por el S. O.• Depende de la situación en que esté la aplicación• Hay diversos estados de las Activity• Conocer los ciclos de vida hará que la aplicación funcione correctamente
  75. 75. Ciclo de vida de una aplicación• Estados de la Activity - Activa (Running): El usuario la ve y puede interactuar con ella. – Pausada (Paused): Ha pasado a segundo plano pero aun está visible porque otra actividad se coloca sobre ella, aunque no la tapa del todo. – Parada (Stopped): La actividad está completamente tapada por la nueva actividad. – Destruida (Destroyed): Se han liberado todos sus recursos y necesitaría comenzar un nuevo ciclo de vida.
  76. 76. Ciclo de vida de una aplicación• Métodos para gestionar el ciclo – onCreate(): Se prepara la interfaz gráfica. – onRestart(): Una actividad parada vuelve a estar activa. – onStart(): Se ejecuta justo antes de que la aplicación sea visible al usuario. – onResume(): Se ejecuta justo antes de que el usuario interactúe con la aplicación – onPause(): Se ejecuta cuando la actividad actual va a ser tapada por otra. – onStop(): Se ejecuta cuando la actividad se hace invisible al usuario. – onDestroy(): Se llama antes de destruir la actividad.
  77. 77. Estructura de un proyecto• Al crear una aplicación Android se genera una estructura de carpetas• Esta estructura es común a cualquier aplicación, independientemente de su tamaño y complejidad.• Se apoya en ficheros XML• Carpeta /src/ – Incluye las clases de la aplicación – Se tendrán tantas clases como vistas (Activity) – Se sobrescribirán los métodos necesarios del ciclo de vida y se les dará funcionalidad.
  78. 78. Estructura de un proyecto• Carpeta /res – Guarda todos los recursos de la aplicación (imágenes, XML de interfaz, XML de strings, sonidos, audios, etc). – A cada recurso se le asigna una dirección – La subcarpeta drawable contiene las imágenes de la aplicación. – La subcarpeta layout contiene la interfaz de las actividades. – La subcarpeta values contiene los textos de la aplicación en ficheros XML
  79. 79. Estructura de un proyecto• Carpeta /gen/ – Contiene código generado automáticamente cada vez que se compilar el proyecto. – Contiene una clase R que contendrá las direcciones de los recursos creados en la carpeta /res/ – La clase R no se debe modificar, ya que se generará constantemente. – Esta clase es el “puente” entre los recursos (/res/) y la aplicación (/src/)
  80. 80. Estructura de un proyecto• AndroidManifest.xml – Es único por cada aplicación – Se establecen los aspectos generales de la aplicación. Entre ellos: • Los permisos que la aplicación necesita para funcionar (Acceso a Internet, a un SDCard, …) • Que clases se deben invocar • La versión de Android para la que ha sido diseñada la aplicación • Las actividades, y servicios que incluye la aplicación • El icono y el texto que se mostrará al lanzar la aplicación • La actividad principal de la aplicación • Etcétera
  81. 81. DEMOSTRACIÓN
  82. 82. AndroidAndroid Market: Google Play • Antes denominado Android Market, ahora Google Play Store o Google Play simplemente. • Aplicación: vending.apk • Enero 2012: 500.000 apps. • Buscar información y descargar apps de terceros.
  83. 83. Android Google Play: Google Checkout/Google Wallet• Para ser desarrollador Android hay que pagar una cuota de 25$, medianteel sistema Google Checkout.• Antes denominado GoogleCheckout, pero ahora ha sidoabsorbido por Google Wallet.• Sistema de pago seguro deGoogle.
  84. 84. AndroidGoogle Play: Descargas y apps
  85. 85. AndroidMarkets: Android vs Amazon
  86. 86. AndroidOtros Markets
  87. 87. Google Play:La tienda de Android
  88. 88. Google Play:La tienda de Android
  89. 89. Google Play: La tienda de Android• Preparar una aplicación para Google Play – El paquete debe estar certificado – Se exporta la aplicación – Se rellenan los datos para certificar la aplicación – Se genera el APK
  90. 90. Google Play: La tienda de Android• Publicar una aplicación en Google Play – Se indica en Google Play el APK generado antes. – Google Play lo valida – Se rellenan los datos para subir la aplicación • Capturas de la aplicación • Información sobre la aplicación • Datos del desarrollador • etcétera – Se activa la publicación
  91. 91. • Fuentes http://www.elandroidelibre.com/2011/12/un-repaso-a-la-historia-de-android.html• http://androidayuda.com/2012/06/01/que-esperamos-de-android-jelly-bean/• http://www.soyacincau.com/2010/07/04/milestone-beats-nexus-one-for-most-popular-android-device/• http://www.gsmarena.com/• http://cubeed.com/android-superara-a-window-en-2016/• http://www.poderpda.com/plataformas/blackberry/gartner-estadisticas-de-smartphones-para-el-q3/• http://androideity.com/2011/07/04/arquitectura-de-android/• http://www.ikeralbeniz.net/2011/01/26/archivos-dex-dalvik-executable-introduccion/• http://danimtzc.blogspot.com.es/2012/03/tipos-de-aplicaciones-en-android.html• http://danimtzc.blogspot.com.es/2012/03/tipos-de-aplicaciones-en-android.html• http://www.xatakandroid.com/programacion-android/cuatro-alternativas-a-java-para-programar-en-android• http://openaccess.uoc.edu/webapps/o2/bitstream/10609/8081/8/xboubesTFM0611.pdf.txt• http://albertovilches.com/desarrollo-de-aplicaciones-moviles-multiplataforma-phonegap-y-titanium-appcelerator• http://www.elandroidelibre.com/2011/12/el-crecimiento-del-android-market-en-una-infografia.html
  92. 92. Fin

×