El tutor de nuestro curso online de Desarrollo de Aplicaciones para Android, Víctor Ramírez Las,…
Cómo depurar aplicaciones con Android Studio: proyecto ejemplo
3.
Cómo depurar aplicaciones con Android Studio: proyecto ejemplo
Vamos a poner en práctica lo explicado hasta ahora sobre depuración de aplicaciones con Android Studio. Será un sencillo proyecto en el que implementamos un algoritmo de ordenación con algunos errores.
Al ejecutar el programa paso a paso en el modo debug de Android Studio, utilizando opciones que ya hemos presentado (incluir breakpoint, entrar en una función, definir un breakpoint condicional), nos permitirá detectar estos fallos y corregirlos.
Tienes disponible abajo el código del proyecto por si quieres descargarlo y practicar tú mismo el proceso de depuración que vamos a explicar esquemáticamente en este tutorial, y ya de forma más detallada, en un siguiente video que publicaremos posteriormente.
Aplicación ejemplo para depurar
Como vemos en la imagen de abajo con la pantalla de la aplicación, se trata de un proyecto con una única Activity que cuenta con dos campos de texto y un botón.
En el primer campo de texto introduciremos una lista de números enteros separados por comas. Al pulsar el botón procesaremos la lista, ordenaremos los elementos y los mostraremos en el campo de texto inferior ya ordenados. Al final de este tutorial tienes una explicación del algoritmo que ordenación que utilizamos.
Errores en la Aplicación
Si ejecutamos el código del proyecto descargado y realizamos una prueba veremos que primero se produce un error de ejecución que causa el cierre de la aplicación, tal como mostramos en esta pantalla:
Para detectar ese error ejecutamos la aplicación en Android Studio en modo de depuración y colocamos un punto de interrupción (breakpoint) al principio del método onClick :
Cuando introducimos de nuevo una lista de números y pulsamos para ordenar, realizamos una ejecución del programa paso a paso con la opción Step Over y vemos que se detiene en la función Ordenar .
Repetimos el proceso pero está vez entramos dentro de la función Ordenar con la opción Step Into. Podemos ir viendo las variables locales y como se van ordenando los elementos.
Haciendo este proceso detectamos el error: el índice j+1 se sale del tamaño del array.
Al examinar el código vemos que teníamos un problema de salida en uno de nuestros bucles dentro de la función Ordenar; habíamos confundido el nombre de la variable índice y la condición de salida nunca se cumplía:
1 |
for(int j=0; i < lista.length-1; j++) |
Una vez corregido ese error volvemos a ejecutar la aplicación, pero aunque en esta ocasión no se detiene ni da mensaje de error, el resultado que se obtiene en la ordenación no es correcto y se repiten números en la salida:
Para detectar donde puede estar el error realizamos un seguimiento del funcionamiento del algoritmo de ordenación, incluyendo un punto de interrupción condicional dentro del bucle interno de la función Ordenar: .
Incluimos la condición de parada j==lista.length-i-1 que hará detenerse la ejecución en la última interacción de cada pasada del bucle interno, para así poder ver cómo va quedando el array ordenado:
Tras hacer este análisis descubrimos un error en el código en la línea 85: debemos asignar la variable temp a list(j+1) , en vez list(j) como teníamos antes.
En la próxima publicación de esta serie sobre depuración en Android Studio podéis ver el vídeo en el que mostramos todo el proceso que hemos presentado de una forma más detallada.
Descarga del proyecto
Os invitamos a descargar el código fuente del proyecto pulsando en este botón de abajo y poner en práctica lo aprendido. También podéis utilizar el código para implementar otras versiones del algoritmo o incluso otros algoritmos de ordenación y depurar su funcionamiento:
Download
Ordenación
El algoritmo de ordenación utilizado en este proyecto ejemplo es el denominado de burbuja (Bubble Sort). Lo hemos elegido porque su implementación es muy sencilla y podréis seguir el proceso de depuración en el vídeo independientemente de vuestro nivel.
Si quieres aprender a programar apps Android, te recomendamos nuestro curso online tutorizado de desarrollo con Android Studio
El algoritmo consiste básicamente en ir realizando comparaciones entre dos elementos correlativos de la lista, cambiándolos de posición en caso de que el de la derecha sea menor. De este modo, tras recorrer toda la lista, nos aseguraremos de que el último elemento es el mayor.
Una vez hecho ésto, repetiremos el proceso excluyendo el último elemento, de forma que obtengamos el segundo mayor en la penúltima posición.
Como ya imaginaréis, el proceso se repetirá hasta que sólo comparemos los dos primeros elementos de la lista, pues el resto ya estará ordenado.
Aquí podéis ver el pseudocódigo (obtenido de la Wikipedia, ver referencia abajo):
Y esta imagen gif animada, muestra de forma muy clara el proceso:
(imagen: autor Swfung8, licencia CC BY-SA 3.0)
En la Wikipedia, disponéis de una explicación muy detallada, así como de algunas mejoras y variaciones que se pueden aplicar.