Taller deandroid

39
Android: Arquitectura, Desarrollo, Navegando código Edwin Hernandez, PhD UBIWIRELESS, LLC Taller : WebConf Latino Julio 22, 2010

description

Taller de Android para Webconf Latino 2010

Transcript of Taller deandroid

Opus One Android Architecture

Android: Arquitectura, Desarrollo, Navegando cdigoEdwin Hernandez, PhDUBIWIRELESS, LLC

Taller : WebConf Latino Julio 22, 2010

Contenido de la PresentacinIntroduccin a la architectura de AndroidFormas de trabajar en AndroidAndroid SDK : Desarrollar ApplicacionesAndroid NDK: Desarrollar librerias nativasMyDroid: Codigo entero que corre en el emulador o en el telefono.AndroidAndroid es un middleware un software stack para sistemas mviles que incluye:Una Mquina Virtual: DALVIK-VM (Comprado por Google y Optimizado)Serie de Libreras y Recursos escritos en Java: JDK, Jars, JNI, ReflexinKERNEL: LINUX 2.6-* que se continua actualizandoCada release tiene nombres de postres, cupcake, donut, eclaire, etc

Logica para programa en AndroidCodigo en JAVA+C/C++Recursos en XMLCompilacion a.classGeneracion .DEX con OptimizacionArchivo APK

Arquitectura simple de un SmartphoneModemGSM/3G/CDMAAPAndroid RuntimeLinux Kernel2.6.xModem LinkComponentes del MiddlewareApplication/ActivityMiddleware/Native ServiceBSP ComponentJava Native InterfaceJNI (Java)Android ServiceOtras partes de AndroidFramework en Java con muchos objetos y clases para utilizarDalvik virtual machine: Dalvik-VM Integrated browser based on the open source WebKit engineGrficos con OpenGL ESSQLite para almacenar datosMultimedia: audio, video, e imagenes (MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF)Telefonia (GSM, CDMA)GPS, Bluetooth, WiFi, y mas, derivados de LinuxAhora vamos a LinuxLinux: Uso del driver model, open source, Abstraccion de Hardware (HAL), manejo de memoria, seguridadLibrerias Nativas: Manejo de Superficies via OpenGL y otras librerias nativas como: Packet Video, SQL Lite, WebKit.EL Android Runtime: Dalvik VM. DEX file support, .class files are converted are runtime y mapeadas a procesos nativos LinuxProductos a Desarrollar en AndroidPrimero: Aplicaciones, son archivos APKDesarrollo via Eclipse o MOTODEV, hasta vi.Android SDK (Reciente version 2.2)Segundo: Librerias nativas para Android, muchos para mejorar rendimiento y para funcionalidad que no esta en el framework las agregan locales (NDK)Tercero: Crear imagines, se podria hacer un acuerdo de colaboracin con un proveedor de hardware y su BSP y crear telefonos inteligentes Que mas necesitamos para hacer una aplicacin?Mucha creatividad!Bajar todas las herramientsTodas las herramientas son gratuitas! Disear el flow y empezar a probarlo en el emuladorAmbiente de DesarrolloEclipse/MotoDevBajar el SDK dehttp://source.android.com/source/download.htmlSeguir instrucciones de Google para instalar SDKImportant componentsADB: Android Debug Build DDMS: Debug Data Management System Android script: Para crear AVDs (Android Virtual Device)Emulator: QEMU para simular el telefonoDX: Converte los .class a DEXEclipse

Android Script

DDMS

Emulator

ADB: Android Debug Bridge

DroidDraw

Estructura de las Aplicaciones AndroidSDK Demo utilizando Eclipse y APIDemosComponentes de un APKActivity: Es la actividad. Muchos crean un Application con muchas actividadesIntent: Mecanismo utilizado para activar componentes y comunicarse entre actividades. Broadcast Receiver: Estan diseados para registrarse a leer Intents y recibirlosContent Providers: Proveen datos a todo el sistema, acceso a Contactos, Listado de Mensajes, DRMServices: No tienen UI, y por lo general correr en el background

Estados de una Aplicacion en Android

Service

ActivityUnidad Principal. Una actividad es lo que se ejecuta y es manejado por el Dalvik-VM en un life-cycle. Una aplicacion puede tener varias actividades entrelazadas, pero solamente una es la que se lanza del icono principalEl UI se define via el archivo Manifest, DroidDraw o un XML EditorEl Archivo Manifest, contiene importantes definiciones para la Actividad, UI, filtros de intents, otras actividades, permisos de acceso. ServiceUn servicio, probablemente no tiene UIGeneralmente utliza Noticaciones y el Toolbar para presentar actualizacionesGeneralmente se comiena y se manaja en el backgroundTratar de utilizar la clase AsyncTask para correr procesos en el backgroundIntentMecanismo de comunicacin entre actividades (Activities)Puede ser implicito, o explicitoSe puede hacer un Broadcast Intent, o se puede seleccionar la clase que se quiere lanzar.Se pueden definir nuevos intents, INTENT_WEBCONF si se desa via archivo manifest Broadcast ReceiverSe implementa para recibir un Intent, ya sea que este en el sistema: e.g. ACTION_CALL o cualquier intent creado por una actividadEl BroadCast Reciever es util apra manejar eventos Chequear los Permissions siempre, no todos los Intents pueden recibirse por una clases de este tipoContent Provider Es simplemente una abstraccion para accesar una clase de datos, de una o varias tablas en SQLITE o en un archivoEl 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 SQLITEMuchos Developers no los utilizan Seguridad y PermisosCada aplicacion creada en /data/ tiene un UID unicoCada aplicacion creada en /system es de otro UID y generalmente no se puede borrar del sistemaLa seguridad de aplicaciones puede requerir firmar el APK con una misma llave para verificar sea validoA su vez, Certificados asociados con el System previenen ingreso no autoizadoEn un rooted phone estos permisos son validos pero pueden ser reemplazados.Muchos otros servicios en AndroidLocation: GPS a travez de LocationProvidersMultimedia Mensajeria de Texto y MultimediaBusqueda Muchos mas localizados en: http://developer.android.com/resources/index.html Veamos Ejemplo de APIDemoViewsAppOSWebViewsListActivityCodigo de Android Goldfish: Arquitectura Proveida en Android 2.2MyDroid : Open SourcePodemos revisar todo el codigo de los Repos de Google, incluyendo codigo de HTC, y otros VendorsQue podemos encontrar:Un Browser: Browser AppUn Provider: Digital Rights Management Integracion con el Kernel: BSP es Goldfish Architecture.Mucha memoria, 8GB mnimo. Seguir instruccione en:http://source.android.com/source/git-repo.html

Browser Activity

Codigo Nativo (NDK)Resumen de funcionamiento : JNI Java Native InterfaceNDKSe pueden crear librerias de extension .so en C/C++Ejemplos de combinacion Nativo + JavaBluetoothRIL : Radio Interface Layer Camera AppDRM: Digital Rights ManagementNow your own applications! NDK

NDK

Codigo en CFuturo de Desarrollo de AppsApp Inventor : Enlistarse para revisar BETA

MOTODEV DEMO

Motorola