taller de android
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 AndroidTRANSCRIPT
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