Taller de Android

3,653 views

Published on

Taller de Android para Webconf Latino 2010
- El sistema operativo de android con DEX
- Desarrollo y herramientas de Android (eclipse)
- Herramientas para crear aplicaciones
- Como crear una imagen y el emulador
- Desarrollo nativo en C/C++ para Android

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

No Downloads
Views
Total views
3,653
On SlideShare
0
From Embeds
0
Number of Embeds
24
Actions
Shares
0
Downloads
152
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Taller de Android

  1. 1. Edwin Hernandez, PhD UBIWIRELESS, LLC Taller : WebConf Latino Julio 22, 2010
  2. 2. Contenido de la Presentación <ul><li>Introducción a la architectura de Android </li></ul><ul><li>Formas de trabajar en Android </li></ul><ul><ul><li>Android SDK : Desarrollar Applicaciones </li></ul></ul><ul><ul><li>Android NDK: Desarrollar librerias nativas </li></ul></ul><ul><ul><li>MyDroid: Codigo entero que corre en el emulador o en el telefono. </li></ul></ul>
  3. 3. Android <ul><li>Android es un “middleware” un software stack para sistemas móviles que incluye: </li></ul><ul><ul><ul><li>Una Máquina Virtual: DALVIK-VM (Comprado por Google y Optimizado) </li></ul></ul></ul><ul><ul><ul><li>Serie de Librerías y Recursos escritos en Java: JDK, Jars, JNI, Reflexión </li></ul></ul></ul><ul><ul><ul><li>KERNEL: LINUX 2.6-* que se continua actualizando </li></ul></ul></ul><ul><ul><ul><li>Cada “release” tiene nombres de postres, “cupcake”, “donut”, “eclaire”, etc </li></ul></ul></ul>
  4. 4. Logica para programa en Android Codigo en JAVA+C/C++ Recursos en XML Compilacion a .class Generacion .DEX con Optimizacion Archivo APK
  5. 6. Android Runtime Linux Kernel 2.6.x Modem Link Modem GSM/3G/CDMA AP
  6. 7. Application/Activity Java Native Interface JNI (Java) Android Service Middleware/Native ServiceBSP Component
  7. 8. Otras partes de Android <ul><li>Framework en Java con muchos objetos y clases para utilizar </li></ul><ul><li>Dalvik virtual machine: Dalvik-VM </li></ul><ul><li>Integrated browser based on the open source WebKit engine </li></ul><ul><li>Gráficos con OpenGL ES </li></ul><ul><li>SQLite para almacenar datos </li></ul><ul><li>Multimedia: audio, video, e imagenes (MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF) </li></ul><ul><li>Telefonia (GSM, CDMA) </li></ul><ul><li>GPS, Bluetooth, WiFi, y mas, derivados de Linux </li></ul>
  8. 9. Ahora vamos a Linux <ul><li>Linux: Uso del “driver model,” open source, Abstraccion de Hardware (HAL), manejo de memoria, seguridad </li></ul><ul><li>Librerias Nativas: Manejo de Superficies via OpenGL y otras librerias nativas como: Packet Video, SQL Lite, WebKit. </li></ul><ul><li>EL “And roid Runtime”: Dalvik VM. DEX file support, .class files are converted are runtime y mapeadas a procesos nativos Linux </li></ul>
  9. 10. Productos a Desarrollar en Android <ul><li>Primero: Aplicaciones, son archivos “APK” </li></ul><ul><ul><li>Desarrollo via Eclipse o MOTODEV, hasta “vi”. </li></ul></ul><ul><ul><li>Android SDK (Reciente version 2.2) </li></ul></ul><ul><li>Segundo: Librerias nativas para Android, muchos para mejorar rendimiento y para funcionalidad que no esta en el “framework” las agregan locales (NDK) </li></ul><ul><li>Tercero: Crear imagines, se podria hacer un acuerdo de colaboración con un proveedor de hardware y su BSP y crear telefonos inteligentes  </li></ul>
  10. 11. Que mas necesitamos para hacer una aplicación? <ul><li>Mucha creatividad! </li></ul><ul><li>Bajar todas las herramients </li></ul><ul><ul><li>Todas las herramientas son gratuitas! </li></ul></ul><ul><li>Diseñar el flow y empezar a probarlo en el emulador </li></ul>
  11. 12. Ambiente de Desarrollo <ul><li>Eclipse/MotoDev </li></ul><ul><li>Bajar el SDK de http://source.android.com/source/download.html </li></ul><ul><ul><li>Seguir instrucciones de Google para instalar SDK </li></ul></ul><ul><li>Important components </li></ul><ul><ul><li>ADB: Android Debug Build </li></ul></ul><ul><ul><li>DDMS: Debug Data Management System </li></ul></ul><ul><ul><li>Android script: Para crear AVDs (Android Virtual Device) </li></ul></ul><ul><ul><li>Emulator: QEMU para simular el telefono </li></ul></ul><ul><ul><li>DX: Converte los .class a DEX </li></ul></ul>
  12. 13. Eclipse
  13. 14. Android Script
  14. 15. DDMS
  15. 16. Emulator
  16. 17. ADB: Android Debug Bridge
  17. 18. DroidDraw
  18. 19. SDK Demo utilizando Eclipse y APIDemos
  19. 20. Componentes de un APK <ul><li>Activity : Es la “actividad.” Muchos crean un “Application” con muchas “actividades” </li></ul><ul><li>Intent : Mecanismo utilizado para activar componentes y comunicarse entre actividades. </li></ul><ul><li>Broadcast Receiver : Estan diseñados para registrarse a leer “Intents” y recibirlos </li></ul><ul><li>Content Providers : Proveen datos a todo el sistema, acceso a Contactos, Listado de Mensajes, DRM </li></ul><ul><li>Services: No tienen UI, y por lo general correr en el “background” </li></ul>
  20. 21. Estados de una Aplicacion en Android
  21. 22. Service
  22. 23. Activity <ul><li>Unidad Principal. Una actividad es lo que se ejecuta y es manejado por el Dalvik-VM en un “life-cycle”. </li></ul><ul><li>Una aplicacion puede tener varias actividades entrelazadas, pero solamente una es la que se lanza del icono principal </li></ul><ul><li>El UI se define via el archivo “Manifest,” DroidDraw o un XML Editor </li></ul><ul><li>El Archivo Manifest, contiene importantes definiciones para la “Actividad,” UI, filtros de intents, otras actividades, permisos de acceso. </li></ul>
  23. 24. Service <ul><li>Un servicio, probablemente no tiene UI </li></ul><ul><ul><li>Generalmente utliza Noticaciones y el Toolbar para presentar actualizaciones </li></ul></ul><ul><li>Generalmente se comiena y se manaja en el background </li></ul><ul><li>Tratar de utilizar la clase AsyncTask para correr procesos en el “background” </li></ul>
  24. 25. Intent <ul><li>Mecanismo de comunicación entre actividades (Activities) </li></ul><ul><ul><li>Puede ser implicito, o explicito </li></ul></ul><ul><li>Se puede hacer un Broadcast Intent, o se puede seleccionar la clase que se quiere lanzar. </li></ul><ul><li>Se pueden definir nuevos intents, INTENT_WEBCONF si se desa via archivo manifest </li></ul>
  25. 26. Broadcast Receiver <ul><li>Se implementa para recibir un Intent, ya sea que este en el sistema: e.g. ACTION_CALL o cualquier intent creado por una actividad </li></ul><ul><li>El BroadCast Reciever es util apra manejar eventos </li></ul><ul><li>Chequear los “Permissions” siempre, no todos los Intents pueden recibirse por una clases de este tipo </li></ul>
  26. 27. Content Provider <ul><li>Es simplemente una abstraccion para accesar una clase de datos, de una o varias tablas en SQLITE o en un archivo </li></ul><ul><li>El ContentProvider implementa el acceso a la clase, se puede utlizar de varias actividades y no se necesitan hacer uso de comandos tipo SELECT como en SQLITE </li></ul><ul><li>Muchos “Developers” no los utilizan </li></ul>
  27. 28. Seguridad y Permisos <ul><li>Cada aplicacion creada en /data/ tiene un UID unico </li></ul><ul><li>Cada aplicacion creada en /system es de otro UID y generalmente no se puede borrar del sistema </li></ul><ul><li>La seguridad de aplicaciones puede requerir firmar el APK con una misma llave para verificar sea valido </li></ul><ul><li>A su vez, Certificados asociados con el “System” previenen ingreso no autoizado </li></ul><ul><li>En un “rooted” phone estos permisos son validos pero pueden ser reemplazados. </li></ul>
  28. 29. Muchos otros servicios en Android <ul><li>Location: GPS a travez de LocationProviders </li></ul><ul><li>Multimedia </li></ul><ul><li>Mensajeria de Texto y Multimedia </li></ul><ul><li>Busqueda </li></ul><ul><li>Muchos mas localizados en: http://developer.android.com/resources/index.html </li></ul>
  29. 30. Veamos Ejemplo de “APIDemo” <ul><li>Views </li></ul><ul><li>App </li></ul><ul><li>OS </li></ul><ul><li>WebViews </li></ul><ul><li>ListActivity </li></ul>
  30. 31. <ul><li>Goldfish: Arquitectura Proveida en Android 2.2 </li></ul>
  31. 32. MyDroid : Open Source <ul><li>Podemos revisar todo el codigo de los “Repos” de Google, incluyendo codigo de HTC, y otros “Vendors” </li></ul><ul><li>Que podemos encontrar: </li></ul><ul><ul><li>Un Browser: Browser App </li></ul></ul><ul><ul><li>Un Provider: Digital Rights Management </li></ul></ul><ul><ul><li>Integracion con el Kernel: BSP es Goldfish Architecture. </li></ul></ul><ul><ul><li>Mucha memoria, 8GB mínimo. Seguir instruccione en: </li></ul></ul><ul><ul><li>http://source.android.com/source/git-repo.html </li></ul></ul>
  32. 33. “Browser Activity”
  33. 34. <ul><li>Resumen de funcionamiento : JNI – Java Native Interface </li></ul>
  34. 35. NDK <ul><li>Se pueden crear librerias de extension .so en C/C++ </li></ul><ul><li>Ejemplos de combinacion Nativo + Java </li></ul><ul><ul><li>Bluetooth </li></ul></ul><ul><ul><li>RIL : Radio Interface Layer </li></ul></ul><ul><ul><li>Camera App </li></ul></ul><ul><ul><li>DRM: Digital Rights Management </li></ul></ul><ul><ul><li>Now your own applications! </li></ul></ul>
  35. 36. NDK
  36. 37. NDK Codigo en C
  37. 38. Futuro de Desarrollo de Apps <ul><li>App Inventor : Enlistarse para revisar BETA </li></ul>
  38. 39. MOTODEV DEMO Motorola

×