Your SlideShare is downloading. ×
0
Desarrollo en Android: Conceptos Básicos
Desarrollo en Android: Conceptos Básicos
Desarrollo en Android: Conceptos Básicos
Desarrollo en Android: Conceptos Básicos
Desarrollo en Android: Conceptos Básicos
Desarrollo en Android: Conceptos Básicos
Desarrollo en Android: Conceptos Básicos
Desarrollo en Android: Conceptos Básicos
Desarrollo en Android: Conceptos Básicos
Desarrollo en Android: Conceptos Básicos
Desarrollo en Android: Conceptos Básicos
Desarrollo en Android: Conceptos Básicos
Desarrollo en Android: Conceptos Básicos
Desarrollo en Android: Conceptos Básicos
Desarrollo en Android: Conceptos Básicos
Desarrollo en Android: Conceptos Básicos
Desarrollo en Android: Conceptos Básicos
Desarrollo en Android: Conceptos Básicos
Desarrollo en Android: Conceptos Básicos
Desarrollo en Android: Conceptos Básicos
Desarrollo en Android: Conceptos Básicos
Desarrollo en Android: Conceptos Básicos
Desarrollo en Android: Conceptos Básicos
Desarrollo en Android: Conceptos Básicos
Desarrollo en Android: Conceptos Básicos
Desarrollo en Android: Conceptos Básicos
Desarrollo en Android: Conceptos Básicos
Desarrollo en Android: Conceptos Básicos
Desarrollo en Android: Conceptos Básicos
Desarrollo en Android: Conceptos Básicos
Desarrollo en Android: Conceptos Básicos
Desarrollo en Android: Conceptos Básicos
Desarrollo en Android: Conceptos Básicos
Desarrollo en Android: Conceptos Básicos
Desarrollo en Android: Conceptos Básicos
Desarrollo en Android: Conceptos Básicos
Desarrollo en Android: Conceptos Básicos
Desarrollo en Android: Conceptos Básicos
Desarrollo en Android: Conceptos Básicos
Desarrollo en Android: Conceptos Básicos
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Desarrollo en Android: Conceptos Básicos

6,421

Published on

Conceptos básicos para desarrollar aplicaciones móviles en Android

Conceptos básicos para desarrollar aplicaciones móviles en Android

Published in: Technology, Art & Photos
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
6,421
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
203
Comments
0
Likes
4
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Desarrollo de Aplicaciones Móviles en Android Conceptos Básicos Gabriel Huecas Universidad Politécnica de Madrid 30 de Septiembre de 2011
  • 2. URL básicos• Para empezar: http://www.slideshare.net/dtmilano/android- development-tutorial-v3• Seguimos: http://www.slideshare.net/sullis/introduction-to- android• Detalles: http://www.slideshare.net/tedchien/android- in-a-nutshell-2559290• Completo: http://www.slideshare.net/techmi/curso- desarrollo-en-android
  • 3. URL avanzados• http://developer.android.com/guide/topics/fu ndamentals.html• http://www.dalvikvm.com/• http://www.retrodev.com/
  • 4. Entorno de desarrollo completo• Compilador• Emulador• Depurador• Perfiles de rendimiento Plugin para Eclipse Orientado a comandos
  • 5. Escritas Escritasen C/C++ en Java
  • 6. Arquitectura: Aplicaciones• Incluidas por defecto de Android• Añadidas por el usuario – Sin diferenciación – De terceras empresas – o de su propio desarrollo• Usan API, servicios y bibliotecas de forma igualitaria
  • 7. Arquitectura: Entorno de Aplicaciones (I)• Conjunto de herramientas de desarrollo de cualquier aplicación – Activity Manager: Gestión del Ciclo de Vida – Window Manager: Gestiona las ventanas de las aplicaciones y utiliza la librería Surface Manager. – Telephone Manager: Incluye todas las API vinculadas a las funcionalidades propias del teléfono (llamadas, mensajes, etc.).
  • 8. Arquitectura: Entorno de Aplicaciones (II)– Content Provider: Compartición de datos entre aplicaciones. Acceso a los contactos, agenda…– View System: Elementos de construcción de (GUI): botones, entradas de texto, fechas,… y gestión de dichos elementos: tamaños, disposición, …– Location Manager: información de localización y posicionamiento.– Notification Manager: Comunicación de eventos al usuario: llamadas entrantes, SMS, conexiones Bluetooth, …. Pueden asociarse una acción (Intent)– XMPP Service: API de acceso para intercambio de mensajes XML.
  • 9. Arquitectura: Bibliotecas (I)• libc: básica de C, basada en BSD• Surface Manager: gestión y construcción de elementos visuales y views de una aplicación• OpenGL/SL y SGL: biblioteca gráfica con soporte 3D (OpenGL/SL) y 2D (SDL)• Media Libraries: biblioteca de códecs y formatos multimedia
  • 10. Arquitectura: Bibliotecas (II)• FreeType: fuentes• SSL: comunicaciones seguras• SQLite: creación y gestión de bases de datos relacionales• WebKit: núcleo del navegador Web
  • 11. Arquitectura: Entorno de Ejecución• Core Libraries: bibliotecas Java• Máquina virtual Dalvik.
  • 12. Arquitectura: Núcleo Linux• Basado en el núcleo de Linux 2.6 – HAL: capa de abstracción para el hardware disponible en los dispositivos móviles. – Drivers necesarios para que cualquier componente hardware pueda ser utilizado mediante las llamadas correspondientes. – Fabricantes de Hw: • Crean las bibliotecas de control • Y los drivers
  • 13. Dalvik• VM: arquitectura basada en registros• Optimizada para – Bajo consumo de memoria – Recolección de basura – Ejecuta múltiples instancias simultáneamente – Delega en el núcleo • Gestión de procesos • Gestión de memoria • Gestión de hilos – Bibliotecas escritas en C/C++ con wrappers de acceso – No hay JIT• Los programas de Android se compilan en .dex (Dalvik Executable) y se empaquetan en un .apl (Android Package) – reutiliza la información duplicada por múltiples archivos .class, – Ocupa muchos menos que un .jar. – Bytecode propio, incompatible con JVM• Ingeniería inversa .dex: www.retrodev.com
  • 14. Actividades Vistas Intenciones Servicios AndroidManifest.xmlNotificaciones Bloques de ConstrucciónProveedores Contenido
  • 15. Actividades• Las Actividades se apilan• Sólo una es visible• Sólo una está activa• Se apilan encima según aparecen
  • 16. Estado de las actividades• Activa – Encima de la pila• Pausada – Sin foco, todavía visible• Parada – No visible – Puede eliminarse en caso de pocos recursos• En Destrucción – Se ha notificado su destrucción
  • 17. Vistas• Bloques de construcción básicos• Saben cómo dibujarse• Responden a eventos• Organizados como árboles para construir el GUI• Descritos en XML en los recursos de layout
  • 18. Views y ViewGroups• Las Views y ViewGroups construyen complejos GUIs• El framework de Android es responsable de: – Medidas – Emplazamientos – Dibujado
  • 19. Patrón: carga de layout• Android compila el código XML que describe el layout• Después se carga al crearse la Actividad public void onCreate (Bundle savedInstanceState) { ... setContentView(R.layout.filename); ... }
  • 20. Patrón: identificadores• Identificadores únicos en la definición de la View en XML – permite su posterior uso en Java private View name; public void onCreate (Bundle savedInstanceState) { ... name= (View)findViewById(R.id.name); ... }
  • 21. Intents• Descripción abstracta de una operación – Permite especificar la Actividad a invocar• Describe lo que la aplicación quiere• Se asocian una acción, unos datos y una categoría – Las actividades declaran las acciones que pueden llevar a cabo y los tipos de datos que pueden gestionar. La categoría indica si la actividad se arranca desde el lanzador de aplicaciones, desde el menú de otra aplicación o desde otra actividad
  • 22. Ejemplo de Intención<!-- This filter says that we can view or edit the data of a single note --><intent-filter android:label="@string/resolve_edit"> <action android:name="android.intent.action.VIEW" /> <action android:name="android.intent.action.EDIT" /> <action android:name="com.android.notepad.action.EDIT_NOTE" /> <category android:name="android.intent.category.DEFAULT" /> <data android:mimeType="vnd.android.cursor.item/vnd.google.note" /></intent-filter>
  • 23. Servicios• Se ejecutan en background• No interactúan con el usuario• Ejecutan en el hilo principal del proceso• Se mantiene en ejecución mientras – Se arranque – Tengan conexiones
  • 24. Notificaciones• Alertan al usuario de eventos• Se envían a través del NotificationManager• Tipos – Iconos persistentes – LEDs encendidos – Sonidos o vibraciones
  • 25. Proveedores de Contenidos• Los ContentProviders son objetos para – Obtener datos – Almacenar datos• Datos disponibles para todas las apps• UNICO modo de compartir información entre paquetes• Normalmente, SQLite• Poco acople con clientes• Acceso a través de URI (¡acceso único!)
  • 26. Estados de los Procesos• Procesos en primer plano (críticos)• Procesos visibles (alta prioridad)• Procesos de servicio (alta prioridad)• Procesos en segundo plano (baja prioridad)• Procesos vacios (baja prioridad) – Cacheados para posterior uso
  • 27. AndroidManifest.xml• Fichero de control que le dice al sistema qué hacer y cómo se relacionan los componentes de alto nivel• Pegamento que especifica que Intenciones reciben las Actividades• Especifica los permisos
  • 28. Organización del Código en Eclipse Código Fuente en Java Código Automático ¡NO TOCAR¡ Recursos desestructurados Recursos estructurados ID único Resoluciones localizaciones Descripción de la Aplicación
  • 29. Resource Manager• Elementos no programáticos – Imágenes, videos, audio, textos….• Almacenados en /res y /assets de la aplicación – /res accesible mediante la clase R • Compilada por entorno android • Estructurado: localización, resolución pantalla,… • R.carpeta.recurso – R.layout.main – /assets no se generan IDs para el contenido • Especificar path relativo y nombre de los ficheros
  • 30. proguard.cfg• Modifica el código para – Minimizar el tamaño – Optimizarlo – Ofuscarlo: más difícil de desensamblar por ingeniería inversa – Resulta un .apk más pequeño y eficiente
  • 31. Buenas Prácticas• Ojo a las prestaciones (no es un desktop)• Evite crear objetos• Usar métodos nativos• Mejor virtual que interfaces• Mejor static que virtual (si no se necesitan objetos!)• Sin getters/setters internos• Declarar constantes (final)• Evitar enums
  • 32. Soporte de Múltiples Pantallas Low Density (120), Medium Density High Density (240), Extra High ldpi (160), mdpi hdpi Density (320), xhdpiSmall screen QVGA (240x320) 480x640Normal WQVGA400 (240x400) HVGA (320x480) WVGA800 (480x800) 640x960screen WQVGA432 (240x432) WVGA854 (480x854) 600x1024Large screen WVGA800 (480x800) WVGA800 (480x800) WVGA854 (480x854) WVGA854 (480x854) 600x1024Extra Large 1024x600 XWGA (1280x800) 1536x1152 2048x1536screen 1024x768 1920x1152 2560x1536 1024x768 1920x1200 2560x1600
  • 33. Tamaños de Pantalla y Densidades ldpi mdpi hdpi xhdpi Small 3.5% Normal 0.9% 16.9% 74.0% Large 3.2% xlarge 1.5%Datos recogidos en 7 días, finalizando el 2 de septiembre de 2011
  • 34. Versiones de PlataformasData collected 14-day period ended on September 2nd, 20011
  • 35. Pruebas• A partir de Android 1.6• Creación de proyectos de pruebas• ActivityUnitTestCase para ejecutar casos de test aislados• ServiceTestCase para probar servicios• ActivityInstrumentationTestCase2 para pruebas funcionales de actividades• ApiDemos incluye algunas ejemplos de pruebas• monkeyrunner, generar eventos de usuario seudoaleatorio
  • 36. TraceView// start tracing to "/sdcard/calc.trace"Debug.startMethodTracing("calc");// ...// stop tracingDebug.stopMethodTracing();
  • 37. TraceView: Timeline
  • 38. TraceView: Profile
  • 39. dmtracedump

×