Curso Android | #5. Proyecto: Tic-Tac-Toe

En este capítulo, vamos a crear un juego “Tic-Tac-Toe” en Android Studio, ya sabemos las cosas basicas y es momento de comenzar a crear nuestras aplicaciones.

Podés acceder al curso completo desde este link.

También te recomiendo seguir el curso de Kotlin en este link

Podés seguirme a mi en LinkedIn o también a Maxi en LinkedIn o Twitter si querés estar al tanto de las próximas publicaciones de cada capítulo.


Formato del proyecto

Este proyecto nos servirá para aprender conceptos básicos de Android, vamos a separarlo en capítulos correspondientes al mismo proyecto, para ir aprendiendo a medida que vamos creando.

En esta serie de capítulos, vamos a ver los siguientes elementos:

  • Gradle
  • Manifest
  • Activities
  • Vistas
  • Cuadros de diálogo
  • ViewModels

De más está decir que vamos a estar utilizando Kotlin para implementar toda la lógica del juego, además vamos a crear una pequeña IA para que tengamos un oponente no humano para probar nuestra aplicación. 

Por esto mismo te recomiendo que sigas el curso de Kotlin desde este link para poder tener los conocimientos necesarios al momento de seguir el proyecto.

Al final de este proyecto el código va a estar disponible en GitHub.

Para finalizar, en este proyecto voy a estar utilizando la versión 2021.3.1 Dolphin de Android Studio.


Configuración del proyecto

Vamos a crear un nuevo proyecto desde Android Studio, si no sabes como crear uno te recomiendo ver el capítulo 3 del curso en este link
En este proyecto vamos a crear todo desde 0, así que vamos a elegir una Empty Activity, también vamos a utilizar la API 21(Android 5.0) como el SDK mínimo.

Así debería verse en tu computadora.

Una vez creado el proyecto, vamos a proceder a configurar Gradle.

Configurando Gradle

Gradle es un gestor que nos permite configurar nuestro proyecto, importando librerías, compilando para que podamos ejecutar nuestros desarrollos, permite también firmar nuestras apps y realizar análisis de la estructura de nuestro proyecto recomendando mejoras, pero estas son una de las pocas cosas que puede hacer Gradle, a medida que avancemos en capítulos vamos a ir viendo un poco más de cada herramienta que nos ofrece.

En nuestro proyecto recién creado vamos a tener a nuestra izquierda la vista de Android, que nos va a mostrar la estructura de nuestro proyecto. En esa vista vamos a tener 2 scripts de Gradle con el nombre de build.gradle, estos scripts contienen las configuraciones para Gradle.

Por defecto está en la vista de Android, pero se puede cambiar por la vista de Proyecto, esto ya queda a preferencia de cada uno, pero hay veces que vamos a necesitar cambiar de vista de Proyecto para cambiar algunas cosas.

A la izquierda la vista de Android, a la derecha la vista de Proyecto.

En la vista de Android, podemos ver los dos scripts juntos y junto al nombre su ubicación. El primer script pertenece al Proyecto, y el segundo al Módulo de aplicación. El script de proyecto declara como funciona la compilación, y esta se aplica a todos los módulos.

Vamos a comenzar viendo el script de Proyecto.

El script de proyecto.

En este script tenemos los plugins que se aplican al desarrollo con la particularidad que implementa el formato de Plugin-DSL de Gradle. Muchos proyectos que se pueden encontrar en internet tienen el anterior formato, en instalaciones nuevas de Android Studio, esta es la nueva forma de implementar plugins a nuestros proyectos y es el camino que Google nos va marcando.

Para agregar un plugin solo basta con seguir el formato.

id «plugin id» version «plugin version» [apply «false»]

id y version tienen que ser declarados como un string, entre comillas. apply se declarada como un booleano y se utiliza para deshabilitar el comportamiento predeterminado de aplicar el plugin inmediatamente, puede causar problemas de compilación si esta en true.

Para conocer la versión de los plugins que estamos implementando, podemos copiar el id del plugin y buscar en los plugins de Gradle desde este link

Vamos a buscar a plugin en modo demostración.

Como podemos ver los plugins de Kotlin, se encuentran en la versión 1.7.20 que se liberó al momento de escribir este artículo, en nuestro proyecto tenemos la versión 1.7.10

En cada cambio de versión de un plugin, existe un changelog (por lo general), en este caso como JetBrains es quien mantiene Kotlin, podemos encontrar los cambios de la versión 1.7.20 con respecto a la versión 1.7.10, te dejo el link para que puedas verlo. Changelog Kotlin

Android Studio incorpora el plugin de Kotlin por defecto, esto quiere decir que no es necesaria su descarga para su implementación. En nuestro caso la version 1.7.10 ya venia incluida por defecto, esto lo podemos cambiar desde el menú de File -> Settings -> Languages & Frameworks -> Kotlin

En este caso, la version 1.7.20 se encuentra en Release Candidate (RC) y solo en el canal de Early Acess Preview. Esto quiere decir que el plugin de Android Studio todavia no tiene una versión estable para instalar. De todas formas, cambiando la version desde el build.gradle de proyecto podemos utilizar la version 1.7.20 de Kotlin.

En este caso, queda a criterio nuestro aplicar o no una actualización a un plugin, si estamos sufriendo un problema específico que se soluciona en una nueva versión de un plugin, es un buen motivo para actualizarlo. Pero si todo se encuentra estable y no surge un problema real, la necesidad de actualizar es mínima, es más te voy a dar un consejo que aprendí a la fuerza con Unity, “Si funciona, no lo actualices”.

Tipos de Plugins

Hay 2 tipos de plugins en Gradle, el plugin binario y el plugin script. 

El plugin binario es aquel que podemos utilizar para implementar funciones a nuestros proyectos, por ejemplo el plugin de Kotlin.

El plugin script, es un adicional que podemos utilizar para manipular nuestra build, modificando cosas al momento de compilar, para dar un ejemplo en nuestro proyecto tenemos un script que se llama settings.gradle, justamente es un plugin del tipo script que se encarga de decirle a gradle donde puede buscar y descargar los plugins binarios que implementemos.

Script del Módulo de aplicación

En este script se implementan varias cosas, aqui podemos cambiar el SDK minimo que configuramos antes, también como el targetSdk que es la versión de Android a la que vamos a enfocar el desarrollo.

También tenemos la versión de Android con la que vamos a compilar nuestra app esta corresponde a la versión del targetSdk por lo general, si el compileSdk es menor al targetSdk, Android Studio nos dará una advertencia y en la mayoría de los casos no podremos ejecutar la aplicación por problemas con librerias.

Cuando tenemos elementos resaltados, esto quiere decir que esa dependencia o sdk tiene una nueva versión disponible para implementar.

Podemos actualizar las versiones con solo pasar el mouse por arriba, y Android Studio va a encargarse de poner la ultima versión disponible.

En próximos capítulos vamos a profundizar aún más en Gradle para poder dominarlo por completo. Ahora vamos a continuar con nuestro proyecto

En nuestro script de módulo vamos a insertar el siguiente código, para habilitar el binding de vistas lo cual nos va a permitir trabajar más fácilmente con las vistas, reemplazando al findViewById el cual vamos a encontrar en muchos tutoriales antiguos de Android.

Para agregarlo nos vamos a situar en la llave de cierre de kotlinOptions, presionamos enter y colocamos el siguiente codigo.

viewBinding {
        enabled = true
    }

Tu script deberia verse asi.

Con esto le decimos a Gradle que cree una clase de vinculación para cada XML en el proyecto. Cada clase de este tipo contiene referencias directas a los elementos de la vista.

Como ultimo paso vamos a Sincronizar los cambios, en la notificación de que se detectaron cambios en los scripts de Gradle. Con hacer click en Sync Now, Gradle empezara a realizar los cambios, esto debemos hacerlo cada vez que implementemos algo nuevo a nuestro proyecto mediante un script de Gradle.

Como nuestra aplicación aún no contiene nada, el proceso de sincronizacón no va a ser muy lento.

Conclusiones

En este capítulo vimos un poquito de Gradle y conocimos un poco de cómo funciona al momento de gestionar nuestro proyecto, también sobre la nueva forma de implementar plugins: Plugin-DSL, esto es algo con lo que vamos a estar permanentemente en contacto agregando o quitando dependencias, es un requisito conocer cómo funciona para poder llevar en paz un desarrollo. En el próximo capítulo vamos a estar trabajando con vistas e implementando el ViewBinding.

¡Deja un comentario!

Artículos relacionados

Curso Android | #4. Emuladores

En este capítulo, vamos a configurar un emulador y ver alternativas al emulador de Android Studio. Podés acceder al curso completo desde este link. También

Curso Android | #3. Crear un proyecto

En este capítulo vamos a crear nuestro primer proyecto desde 0, viendo todas las posibilidades que nos ofrece Android Studio Podés acceder al curso completo