Está en la página 1de 39

Edwin Hernandez, PhD UBIWIRELESS, LLC Taller : WebConf Latino Julio 22, 2010

Contenido de la Presentacin
Introduccin a la architectura de Android Formas de trabajar en Android
Android SDK : Desarrollar Applicaciones Android NDK: Desarrollar librerias nativas MyDroid: Codigo entero que corre en el

emulador o en el telefono.

Android
Android 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, Reflexin KERNEL: LINUX 2.6-* que se continua actualizando Cada release tiene nombres de postres, cupcake, donut, eclaire, etc

Logica para programa en Android


Codigo en JAVA+C/C+ + Recursos en XML

Compilacion a .class

Generacion .DEX con Optimizacio n

Archivo APK

Android Runtime AP Linux Kernel 2.6.x Modem Link Modem GSM/3G/CDMA

Application/Activity Android Service JNI (Java) Java Native Interface Middleware/Native ServiceBSP Component

Otras partes de Android


Framework en Java con muchos objetos y

clases para utilizar Dalvik virtual machine: Dalvik-VM Integrated browser based on the open source WebKit engine Grficos con OpenGL ES SQLite para almacenar datos Multimedia: audio, video, e imagenes (MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF) Telefonia (GSM, CDMA) GPS, Bluetooth, WiFi, y mas, derivados de Linux

Ahora vamos a Linux


Linux: Uso del driver model, open source,

Abstraccion de Hardware (HAL), manejo de memoria, seguridad Librerias 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 Linux

Productos a Desarrollar en Android


Primero: Aplicaciones, son archivos APK Desarrollo 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 herramients
Todas las herramientas son gratuitas!

Disear el flow y empezar a probarlo en el

emulador

Ambiente de Desarrollo
Eclipse/MotoDev Bajar el SDK de

http://source.android.com/source/download.html
Seguir instrucciones de Google para instalar SDK

Important components ADB: Android Debug Build DDMS: Debug Data Management System Android script: Para crear AVDs (Android Virtual Device) Emulator: QEMU para simular el telefono DX: Converte los .class a DEX

Eclipse

Android Script

DDMS

Emulator

ADB: Android Debug Bridge

DroidDraw

SDK Demo utilizando Eclipse y APIDemos

Componentes de un APK
Activity: Es la actividad. Muchos crean un

Application con muchas actividades Intent: Mecanismo utilizado para activar componentes y comunicarse entre actividades. Broadcast Receiver: Estan diseados para registrarse a leer Intents y recibirlos Content Providers: Proveen datos a todo el sistema, acceso a Contactos, Listado de Mensajes, DRM Services: No tienen UI, y por lo general

Estados de una Aplicacion en Android

Service

Activity
Unidad 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 principal El UI se define via el archivo Manifest, DroidDraw o un XML Editor El Archivo Manifest, contiene importantes definiciones para la Actividad, UI, filtros de intents, otras actividades, permisos de

Service
Un servicio, probablemente no tiene UI Generalmente utliza Noticaciones y el Toolbar para presentar actualizaciones Generalmente se comiena y se manaja en el

background Tratar de utilizar la clase AsyncTask para correr procesos en el background

Intent
Mecanismo de comunicacin entre

actividades (Activities)
Puede ser implicito, o explicito

Se 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 Receiver
Se implementa para recibir un Intent, ya sea

que este en el sistema: e.g. ACTION_CALL o cualquier intent creado por una actividad El BroadCast Reciever es util apra manejar eventos Chequear los Permissions siempre, no todos los Intents pueden recibirse por una clases de este tipo

Content Provider
Es simplemente una abstraccion para accesar

una clase de datos, de una o varias tablas en SQLITE o en un archivo 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 Muchos Developers no los utilizan

Seguridad y Permisos
Cada aplicacion creada en /data/ tiene un UID

unico Cada aplicacion creada en /system es de otro UID y generalmente no se puede borrar del sistema La seguridad de aplicaciones puede requerir firmar el APK con una misma llave para verificar sea valido A su vez, Certificados asociados con el System previenen ingreso no autoizado En un rooted phone estos permisos son

Muchos otros servicios en Android


Location: GPS a travez de LocationProviders Multimedia Mensajeria de Texto y Multimedia Busqueda Muchos mas localizados en:

http://developer.android.com/resources/index.htm

Veamos Ejemplo de APIDemo


Views App OS WebViews ListActivity

Goldfish: Arquitectura Proveida en Android 2.2

MyDroid : Open Source


Podemos revisar todo el codigo de los

Repos de Google, incluyendo codigo de HTC, y otros Vendors Que podemos encontrar:
Un Browser: Browser App Un 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

Resumen de funcionamiento : JNI Java Native Interface

NDK
Se pueden crear librerias de extension .so en

C/C++ Ejemplos de combinacion Nativo + Java


Bluetooth RIL : Radio Interface Layer Camera App DRM: Digital Rights Management Now your own applications!

NDK

NDK

Codigo en C

Futuro de Desarrollo de Apps


App Inventor : Enlistarse para revisar BETA

MOTODEV DEMO

Motorola

También podría gustarte