Taller de Android

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

description

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

Transcript of Taller de Android

Page 1: Taller de Android

Edwin Hernandez, PhDUBIWIRELESS, LLC

Taller : WebConf Latino Julio 22, 2010

Page 2: Taller de Android

Contenido de la PresentaciónIntroducción a la architectura de AndroidFormas de trabajar en Android

Android SDK : Desarrollar ApplicacionesAndroid NDK: Desarrollar librerias nativasMyDroid: Codigo entero que corre en el

emulador o en el telefono.

Page 3: Taller de Android

AndroidAndroid es un “middleware” un software

stack para sistemas móviles que incluye: Una Máquina Virtual: DALVIK-VM (Comprado

por Google y Optimizado) Serie de Librerías y Recursos escritos en Java:

JDK, Jars, JNI, Reflexión KERNEL: LINUX 2.6-* que se continua

actualizando Cada “release” tiene nombres de postres,

“cupcake”, “donut”, “eclaire”, etc

Page 4: Taller de Android

Logica para programa en Android

Codigo en JAVA+C/C+

+

Recursos en XML

Compilacion a

.class

Generacion .DEX con

Optimizacion

Archivo APK

Page 5: Taller de Android
Page 6: Taller de Android

ModemGSM/3G/

CDMAAP

Android Runtime

Linux Kernel2.6.x

Modem Link

Page 7: Taller de Android

Application/Activity

Middleware/Native ServiceBSP Component

Java Native Interface

JNI (Java)

Android Service

Page 8: Taller de Android

Otras partes de AndroidFramework en Java con muchos objetos y clases

para utilizarDalvik virtual machine: Dalvik-VM Integrated browser based on the open source

WebKit engineGráficos 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 Linux

Page 9: Taller de Android

Ahora vamos a LinuxLinux: 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

Page 10: Taller de Android

Productos a Desarrollar en AndroidPrimero: 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 colaboración con un proveedor de hardware y su BSP y crear telefonos inteligentes

Page 11: Taller de Android

Que mas necesitamos para hacer una aplicación?

Mucha creatividad!Bajar todas las herramients

Todas las herramientas son gratuitas! Diseñar el flow y empezar a probarlo en el

emulador

Page 12: Taller de Android

Ambiente de DesarrolloEclipse/MotoDevBajar el SDK de

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

Important 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 DEX

Page 13: Taller de Android

Eclipse

Page 14: Taller de Android

Android Script

Page 15: Taller de Android

DDMS

Page 16: Taller de Android

Emulator

Page 17: Taller de Android

ADB: Android Debug Bridge

Page 18: Taller de Android

DroidDraw

Page 19: Taller de Android

SDK Demo utilizando Eclipse y APIDemos

Page 20: Taller de Android

Componentes de un APKActivity: Es la “actividad.” Muchos crean un

“Application” con muchas “actividades”Intent: Mecanismo utilizado para activar

componentes y comunicarse entre actividades. Broadcast Receiver: Estan diseñados para

registrarse a leer “Intents” y recibirlosContent Providers: Proveen datos a todo el

sistema, acceso a Contactos, Listado de Mensajes, DRM

Services: No tienen UI, y por lo general correr en el “background”

Page 21: Taller de Android

Estados de una Aplicacion en Android

Page 22: Taller de Android

Service

Page 23: Taller de Android

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 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 acceso.

Page 24: Taller de Android

ServiceUn 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”

Page 25: Taller de Android

IntentMecanismo de comunicación 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

Page 26: Taller de Android

Broadcast ReceiverSe 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

Page 27: Taller de Android

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

Page 28: Taller de Android

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 valido

A su vez, Certificados asociados con el “System” previenen ingreso no autoizado

En un “rooted” phone estos permisos son validos pero pueden ser reemplazados.

Page 29: Taller de Android

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

Page 30: Taller de Android

Veamos Ejemplo de “APIDemo”ViewsAppOSWebViewsListActivity

Page 31: Taller de Android

Goldfish: Arquitectura Proveida en Android 2.2

Page 32: Taller de Android

MyDroid : Open SourcePodemos revisar todo el codigo de los “Repos”

de Google, incluyendo codigo de HTC, y otros “Vendors”

Que podemos encontrar:Un Browser: Browser AppUn Provider: Digital Rights Management Integracion con el Kernel: BSP es Goldfish

Architecture.Mucha memoria, 8GB mínimo. Seguir

instruccione en:http://source.android.com/source/git-repo.html

Page 33: Taller de Android

“Browser Activity”

Page 34: Taller de Android

Resumen de funcionamiento : JNI – Java Native Interface

Page 35: Taller de Android

NDKSe pueden crear librerias de extension .so en

C/C++Ejemplos de combinacion Nativo + Java

BluetoothRIL : Radio Interface Layer Camera AppDRM: Digital Rights ManagementNow your own applications!

Page 36: Taller de Android

NDK

Page 37: Taller de Android

NDK

Codigo en C

Page 38: Taller de Android

Futuro de Desarrollo de AppsApp Inventor : Enlistarse para revisar BETA

Page 39: Taller de Android

MOTODEV DEMO

Motorola