Taller de Android

Post on 18-Nov-2014

3.973 views 4 download

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

Edwin Hernandez, PhDUBIWIRELESS, LLC

Taller : WebConf Latino Julio 22, 2010

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.

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

Logica para programa en Android

Codigo en JAVA+C/C+

+

Recursos en XML

Compilacion a

.class

Generacion .DEX con

Optimizacion

Archivo APK

ModemGSM/3G/

CDMAAP

Android Runtime

Linux Kernel2.6.x

Modem Link

Application/Activity

Middleware/Native ServiceBSP Component

Java Native Interface

JNI (Java)

Android Service

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

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

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

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

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

Eclipse

Android Script

DDMS

Emulator

ADB: Android Debug Bridge

DroidDraw

SDK Demo utilizando Eclipse y APIDemos

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”

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

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”

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

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

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

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 “APIDemo”ViewsAppOSWebViewsListActivity

Goldfish: Arquitectura Proveida en Android 2.2

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

“Browser Activity”

Resumen de funcionamiento : JNI – Java Native Interface

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!

NDK

NDK

Codigo en C

Futuro de Desarrollo de AppsApp Inventor : Enlistarse para revisar BETA

MOTODEV DEMO

Motorola