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
![Page 1: Taller de Android](https://reader035.vdocumento.com/reader035/viewer/2022062614/546dabaeaf795971298b5375/html5/thumbnails/1.jpg)
Edwin Hernandez, PhDUBIWIRELESS, LLC
Taller : WebConf Latino Julio 22, 2010
![Page 2: Taller de Android](https://reader035.vdocumento.com/reader035/viewer/2022062614/546dabaeaf795971298b5375/html5/thumbnails/2.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022062614/546dabaeaf795971298b5375/html5/thumbnails/3.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022062614/546dabaeaf795971298b5375/html5/thumbnails/4.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022062614/546dabaeaf795971298b5375/html5/thumbnails/5.jpg)
![Page 6: Taller de Android](https://reader035.vdocumento.com/reader035/viewer/2022062614/546dabaeaf795971298b5375/html5/thumbnails/6.jpg)
ModemGSM/3G/
CDMAAP
Android Runtime
Linux Kernel2.6.x
Modem Link
![Page 7: Taller de Android](https://reader035.vdocumento.com/reader035/viewer/2022062614/546dabaeaf795971298b5375/html5/thumbnails/7.jpg)
Application/Activity
Middleware/Native ServiceBSP Component
Java Native Interface
JNI (Java)
Android Service
![Page 8: Taller de Android](https://reader035.vdocumento.com/reader035/viewer/2022062614/546dabaeaf795971298b5375/html5/thumbnails/8.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022062614/546dabaeaf795971298b5375/html5/thumbnails/9.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022062614/546dabaeaf795971298b5375/html5/thumbnails/10.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022062614/546dabaeaf795971298b5375/html5/thumbnails/11.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022062614/546dabaeaf795971298b5375/html5/thumbnails/12.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022062614/546dabaeaf795971298b5375/html5/thumbnails/13.jpg)
Eclipse
![Page 14: Taller de Android](https://reader035.vdocumento.com/reader035/viewer/2022062614/546dabaeaf795971298b5375/html5/thumbnails/14.jpg)
Android Script
![Page 15: Taller de Android](https://reader035.vdocumento.com/reader035/viewer/2022062614/546dabaeaf795971298b5375/html5/thumbnails/15.jpg)
DDMS
![Page 16: Taller de Android](https://reader035.vdocumento.com/reader035/viewer/2022062614/546dabaeaf795971298b5375/html5/thumbnails/16.jpg)
Emulator
![Page 17: Taller de Android](https://reader035.vdocumento.com/reader035/viewer/2022062614/546dabaeaf795971298b5375/html5/thumbnails/17.jpg)
ADB: Android Debug Bridge
![Page 18: Taller de Android](https://reader035.vdocumento.com/reader035/viewer/2022062614/546dabaeaf795971298b5375/html5/thumbnails/18.jpg)
DroidDraw
![Page 19: Taller de Android](https://reader035.vdocumento.com/reader035/viewer/2022062614/546dabaeaf795971298b5375/html5/thumbnails/19.jpg)
SDK Demo utilizando Eclipse y APIDemos
![Page 20: Taller de Android](https://reader035.vdocumento.com/reader035/viewer/2022062614/546dabaeaf795971298b5375/html5/thumbnails/20.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022062614/546dabaeaf795971298b5375/html5/thumbnails/21.jpg)
Estados de una Aplicacion en Android
![Page 22: Taller de Android](https://reader035.vdocumento.com/reader035/viewer/2022062614/546dabaeaf795971298b5375/html5/thumbnails/22.jpg)
Service
![Page 23: Taller de Android](https://reader035.vdocumento.com/reader035/viewer/2022062614/546dabaeaf795971298b5375/html5/thumbnails/23.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022062614/546dabaeaf795971298b5375/html5/thumbnails/24.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022062614/546dabaeaf795971298b5375/html5/thumbnails/25.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022062614/546dabaeaf795971298b5375/html5/thumbnails/26.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022062614/546dabaeaf795971298b5375/html5/thumbnails/27.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022062614/546dabaeaf795971298b5375/html5/thumbnails/28.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022062614/546dabaeaf795971298b5375/html5/thumbnails/29.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022062614/546dabaeaf795971298b5375/html5/thumbnails/30.jpg)
Veamos Ejemplo de “APIDemo”ViewsAppOSWebViewsListActivity
![Page 31: Taller de Android](https://reader035.vdocumento.com/reader035/viewer/2022062614/546dabaeaf795971298b5375/html5/thumbnails/31.jpg)
Goldfish: Arquitectura Proveida en Android 2.2
![Page 32: Taller de Android](https://reader035.vdocumento.com/reader035/viewer/2022062614/546dabaeaf795971298b5375/html5/thumbnails/32.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022062614/546dabaeaf795971298b5375/html5/thumbnails/33.jpg)
“Browser Activity”
![Page 34: Taller de Android](https://reader035.vdocumento.com/reader035/viewer/2022062614/546dabaeaf795971298b5375/html5/thumbnails/34.jpg)
Resumen de funcionamiento : JNI – Java Native Interface
![Page 35: Taller de Android](https://reader035.vdocumento.com/reader035/viewer/2022062614/546dabaeaf795971298b5375/html5/thumbnails/35.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022062614/546dabaeaf795971298b5375/html5/thumbnails/36.jpg)
NDK
![Page 37: Taller de Android](https://reader035.vdocumento.com/reader035/viewer/2022062614/546dabaeaf795971298b5375/html5/thumbnails/37.jpg)
NDK
Codigo en C
![Page 38: Taller de Android](https://reader035.vdocumento.com/reader035/viewer/2022062614/546dabaeaf795971298b5375/html5/thumbnails/38.jpg)
Futuro de Desarrollo de AppsApp Inventor : Enlistarse para revisar BETA
![Page 39: Taller de Android](https://reader035.vdocumento.com/reader035/viewer/2022062614/546dabaeaf795971298b5375/html5/thumbnails/39.jpg)
MOTODEV DEMO
Motorola