Notas de clase de Programación de Dispositivos Móviles

Desafortunadamente, la aplicación Duelo de Vaqueros se ha detenido

Curso optativo de la licenciatura en Ciencias de la Computación (plan 2013). El contenido del curso es sobre desarrollo de Android. Comienza con consideraciones más básicas sobre desarrollo móvil en general, luego introduce al Android SDK y Android Studio para empezar a explorar la plataforma de Android y las herramientas y conceptos más básicos para empezar a desarrollar aplicaciones con Android.

Así con esta pequeña introducción dada, va una lista de las notas que he elaborado para este curso:

Introducción a Android

Empezamos el curso con una introducción muy general al desarrollo móvil

Android como Sistema Operativo

Poniendo por primera vez los reflectores sobre Android, vamos a conocer la plaforma como Sistema Operativo.

Android como plataforma de desarrollo

Siguiendo con la tendencia anterior, ahora vamos a explorar Android como una plataforma de desarrollo. Note que el Stack de desarrollo de Android es más grande que lo que se presenta en estas notas y las anteriores; pero para empezar a adentrarnos en el mundo del desarrollo móvil, empezamos con esto.

Consideraciones generales del desarrollo móvil

Antes de empezar a conocer las herramientas con las que vamos a desarrollar aplicaciones para Android, vamos a revisar algunas de las consideraciones del desarrollo móvil más importantes.

Android Studio

Empecemos a conocer la herramienta principal con la que desarrollamos aplicaciones Android: Android Studio

Android Debug Bridge

Ahora que conocemos Android Studio, vamos a continuar explorando el ADB; una de las herramientas de desarrollo más versátiles y poderosas en el Android.

Android Virtual Device

Para terminar de conocer las herramientas de desarrollo más útiles, vamos a conocer el emulador de Android; que es básicamente una máquina virtual que ejecuta Android como Sistema Operativo.

Trabajo en equipo

Tema opcional

En este curso, se buscaba que los alumnos desarrollaran sus proyectos en equipo siguiendo la metodología ágil "Scrum". Sin embargo, son pocas las asignaturas del plan de estudios y profesores que desarrollan proyectos mediante el uso de alguna metodología específica, por lo que se introdujeron una serie de sesiones previas al desarrollo como tal en android en las que se estudiaron algunas "buenas prácticas"; o mejor dicho, algunos principios de ingeniería de software para ejercer un desarrollo centrado en la calidad del producto de software y el usuario.

En estas notas se introducen conceptos y práctias para el desarrollo en equipo.

Comunicación del equipo

Tema opcional

Estas notas introducen algunos conceptos y práctias para mantener al equipo de trabajo comunicado.

Documentación

Tema opcional

Estas notas describen de manera muy breve algunas cualidades esenciales que debe tener la documentación de un proyecto de software.

Control de versiones

Tema opcional

Estas notas introducen conceptos para el control de versiones usando Git; la construcción de distintas partes del software en paralelo y lanzamientos.

Desarrollando aplicaciones para Android

En estas notas (finalmente) se ejecuta un proyecto que va mostrando algunos de los conceptos más básicos que son necesarios para empezar a desarrollar aplicaciones para Android.

El proyecto que se desarrolla en estas notas está disponible en Gitlab: https://gitlab.com/nachintoch/cowboy-duel/tree/v1.1
El proyecto cuenta con una Wiki adicional a las notas en el que encontrará más información ténica del proyecto: https://gitlab.com/nachintoch/cowboy-duel/wikis/home

Consideraciones para el desarrollo de GUI para apps móviles

En estas notas se indica brevemente algunas consideranciones importantes que se deben tener en cuenta al diseñar interfaces gráficas de usuario en aplicaciones para dispositivos móviles.

Agregando al contenido de las notas, siempre es mejor tener en consideración a algún experto/profresional en diseño para medios digitales que se encargue de lidiar de la mejor manera con los distintos retos que representa el diseño de GUIs para móviles.

Introducción a las GUIs

En estas notas se introducen algunos conceptos básicos para el desarrollo de interfaces gráficas para aplicaciones móviles.

Material design

El lenguaje de dieseño estándar de Android es Material Design. Estas notas introducen algunos de los fundamentos más básicos para desarrollar apps de Android siguiendo el estandar de diseño.

Estas notas inician el desarrollo de un proyecto que se retoma en varias notas más adelante, para evitar confusiones verifique que explora la versión 1 del proyecto (etiqueta "v1.0") que representa la versión de la app que se desarrolla en estas notas. El resto del proyecto se construye y explica más adelante. La plataforma Android es basatante amplia, por lo que es importante revisar estos conceptos con el detenimiento adecuado para hacer el mejor uso posible de la plataforma y producir mejores apps. https://gitlab.com/nachintoch/gui-design-patterns-w-material-desig/tree/v1.0


El proyecto cuenta con una Wiki adicional a las notas en el que se describe información ténica adicional. En la version v1.0 del proyecto; que es a la que corresponden estas notas, están ausentes algunos componentes descritos en la Wiki. Por el momento ignorelos, más adelante se completara la aplicación y se completaran los componentes ausentes en esta primer versión. https://gitlab.com/nachintoch/gui-design-patterns-w-material-desig/wikis/home

Ciclo de vida de una app

Las aplicaciones de Android; como las aplicaciones en muchas otras plataformas, tienen un ciclo de vida: son instanciadas, puestas en marcha, consumen recursos, son pausadas y eventualmente crashean... Bueno, no deberín crashear; pero en general, en algún momento su ejecución termina. Y puede terminar de varias formas; así como puede ejecutarse aún cuando no se usa.

Estas notas indican cómo es que este ciclo de vida se desarrolla, para posteriormente empezar a desarrollar aplicaciones más completas que actuan de forma responsable a sus cambios de estado y no sorprenden al usuario perdiendo texto o interactividad.

Fragmentos

En estas notas, se retoma el proyecto de ejemplo de Material Design y se continua su desarrollo para conocer los fragmentos, que son pantallas que pueden acomodarse de la forma en que mejor nos convenga para implementar las interfaces de nuestras apps. Los fragmentos se usan para implementar uno de los patros de diseño de Android más preciados: Master-Detail Flow; que se implementa en el proyecto de ejemplo de Material Design.

Los fragmentos también se usan para implementar pantallas de ajustes de usuario y otras pantallas "predefinidas" que nostros mismos podemos definir. Se agregará una pantalla de ajustes a la aplicación que ejemplifica Material Design también

Queda pendiente un último cambio a la aplicación, estas notas corresponen a la versión v2.5; por favor y para evitar confusiones, verifique que está navegando en la etiqueta v2.5 del proyecto: https://gitlab.com/nachintoch/gui-design-patterns-w-material-desig/tree/v2.5

Y para no perder la costumbre; el enlace a la Wiki: https://gitlab.com/nachintoch/gui-design-patterns-w-material-desig/wikis/home

Proveedores de Contenidos

Para terminar el curso y la aplicación de Material Design, vamos a terminar implementando un proveedor de contenidos; que podemos entenderlos como el ORM de Android: nos permiten almacenar, recuperar y compartir información (si lo deseamos) con el sistema. El almacenamiento es independiente de la implementación por lo que aunque el proyecto se ejemplifica usando la implementación nativa de SQLite de Android, podríamos usar otros manejadores de bases de datos o incluso almacenamiento en la nube o en otros medios.

Estas notas se desarrollan con la versión v3.1 del proyecto de ejemplo: https://gitlab.com/nachintoch/gui-design-patterns-w-material-desig/tree/v3.1
Y la Wiki del proyecto:

Y para no perder la costumbre; el enlace a la Wiki: https://gitlab.com/nachintoch/gui-design-patterns-w-material-desig/wikis/home