Nombre del curso: Seminario Desarrollo de sistemas embebidos en Android Profesor responsable: Dr. Ing. Ariel Lutenberg Docentes del curso: Ezequiel Aceto, Santiago Maudet Requisitos mínimos: - Programación en lenguaje C. - Programación en lenguaje Java. - Conceptos básicos de sistemas Unix. Objetivos El objetivo general de curso es preparar a ingenieros y desarrolladores para que pueden embarcarse en la construcción de un proyecto utilizando Android. Los objetivos puntuales son: 1. Adquirir conocimientos sobre el ecosistema Android. 2. Conceptualización de la arquitectura de un sistema Android. Compilación y personalización de una distribución de AOSP para ARM (Beagleboard). 3. Configuración del sistema de control de versiones para proyectos privados 4. Aprender a utilizar los componentes principales del lenguaje Java en Android. 5. Desarrollar y depurar aplicaciones en lenguaje Java y C++. Las prácticas se realizaran usando Android Jelly Bean (4.1.2) y Beagleboard xm. 1
Programa Sintético 1. Introducción a Android. 2. Configuración y compilación de un cross-toolchain. 3. Creación de una imagen booteable. 4. Personalización. 5. Configuración de un repositorio privado. 6. El entorno de desarrollo. 7. Componentes de una aplicación Android 8. Desarrollo y depuración de aplicaciones en Android en Java. 9. Android y los periféricos externos 10. Interface de código nativo en C con aplicaciones Java. Programa Analítico 1. Introducción a Android. 1. Que es Android? 2. Conceptos básicos del ecosistema Android. 3. Android vs Android Open Source Project 2. Configuración y compilación de un cross-toolchain. 1. Configuración del ambiente de compilación 2. Manejo del repositiorio y el código fuente. 3. Compilación de u-boot, Kernel y File System 2
3. Creación de una imagen booteable. 1. Configuración de los parametros de booteo 2. Performance de distintos medios de almacenamiento 3. Mejora de la performance del sistema 4. Personalización 1. Modificación de la animación de booteo. 2. Modificación del fondo de pantalla por default. 3. Qué es un launcher? Cómo utilizar un launcher propio? 5. Configuración de un repositorio privado. 1. Breve reseña del funcionamiento de REPO, y como configurar un repositorio privado para nuestra compilación de Android 6. El entorno de desarrollo. 1. Las distintas herramientas que componen el ecosistema Android 2. Android SDK Manager 3. Android Debug Bridge 4. Dispositivos Virtuales, Locales y Remotos. Ventajas y buenas practicas 7. Componentes de una aplicación Android 1. Qué es un Activity? Ciclo de vida y diseño de layout. 2. Qué es un Service? Ciclo de vida. 3. Qué es un Broadcast Receiver? 4. Cómo interactuan los distintos componentes de una aplicación Android? Intents. Recomendaciones y buenas practicas de programación. 3
8. Desarrollo y depuración de aplicaciones en Android en Java. 1. Creación de una aplicación. Diseño de la UI de una actividad 2. Depuración de una aplicación Android. El uso de logcat 3. Creación de un widget. 9. Android y los periféricos externos 1. Lineamientos generales 2. Bluetooth. Cómo establecer una comunicación con un dispositivo Bluetooth? 3. USB Host. Cómo podemos desarrollar un driver USB en Java? 4. Introducción a Android Open Accessory API. Placas de desarrollo y APIs compatibles con Open Accessory. 10. Interface de código nativo en C con aplicaciones Java. 1. Qué es JNI? Cómo funciona? 2. Configuración de Android Native Development Kit (NDK) 3. Desarrollo de un driver en C++ en el código fuente de Android. Interacción del driver con una aplicación Java. 4
Bibliografía Apuntes preparados por los docentes y capítulos seleccionado de libros, revistas y publicaciones de fabricantes. Paul J. Deitel, Harvey M. Deitel. Android for Programmer, Noviembre. 2011. James Steele, Nelson To. The Android Developer s Cookbook. Octubre 2010yo Robert Love, Linux Kernel Development, Addison-Wesley Professional, Julio, 2010. 5