Desarrollo Android: Usando GitHub

¡Bienvenido de nuevo, desarrollador de apps! Si eres como yo, estás más que preparado para mejorar tus habilidades en el desarrollo de aplicaciones. Como he mencionado en otras ocasiones, la empresa que domina prácticamente todo el monopolio de proyectos de código abierto online es GitHub. Existen varias opciones basadas en Git en el mercado, pero teniendo en cuenta nuestros objetivos, utilizaremos GitHub, con la ventaja de que todos los proyectos y errores estarán disponibles para que la comunidad los vea, aporte sus comentarios y mejoras.

La buena noticia es que Android Studio trata a GitHub como un Repositorio de código fuente de primera clase, es decir, puedes hacer que funcionen otros proveedores Git, pero no están tan pulidos. Esto simplemente significa que si decidir seguir tu propio camino con algo diferente a GitHub como herramienta de control para el código fuente, entonces lo dejaremos como un simple ejercicio, para que lo completes y nos dejes tus comentarios en los foros ODROID. Así pues, conectemos el IDE a nuestro proveedor de control de código fuente.

Subir el código a GitHub

Si nos fijamos en el código de nuestra última entrega, era bastante básico. Android Studio sólo tardó unos cuantos minutos en crearlo, y luego tuvimos una completa carpeta de proyecto con scripts de compilación, código de la aplicación y archivos de diseño. El inconveniente de toda esta automatización con las herramientas del entorno de desarrollo integrado es que crea una gran cantidad de archivos, y hacer un seguimiento de ellos (y los cambios que se realizan en los mismos) puede darte un gran dolor de cabeza. Aquí es donde los sitios de alojamiento como GitHub realmente nos ayudan, ya que nos permiten mantener una copia de seguridad de todos nuestros valiosos archivos de código, listos para ser recuperados en caso de fallo en el disco, pérdida del equipo o cualquier otro desastre. De modo que, partiremos del proyecto que creamos la última vez con Android Studio, nos dirigiremos al menú "VCS", seleccionaremos “Import into Version Control" y seleccionaremos "Share Project on GitHub". Si aún no ha pasado por el proceso de crear una cuenta GitHub, al que hicimos referencia la última vez, ahora es tu oportunidad.

figure 01 - Set version control to GitHub
Figura 01 - Definir el control de versiones en GitHub

Una vez que hayas confirmado y configurado la cuenta, puedes volver a Android Studio y dentro del cuadro de diálogo "Login to GitHub", seleccionar "Password" en el Tipo de autentificación e introduce tu nombre de usuario y contraseña. A continuación, se mostrará el cuadro de diálogo "Share Project on GitHub", que te permite cambiar el repositorio, o "repo", el nombre, el nombre remoto y la descripción. Por ahora, deja tal cual el nombre del repositorio y el nombre remoto, y añade una simple descripción para el proyecto. Yo escribí algo simple, como "My first Android project". Después, podrás confirmar qué archivos se enviarán inicialmente a GitHub, es adecuado aceptar el todo conjunto por defecto y hacer clic en "OK". En pocos segundos, aparecerá una notificación en la cual se indicará que el proyecto está subido a GitHub. Puede hacer clic en el enlace de la notificación y verificar tu código fuente online.

figure 02 - Login to GitHub
Figura 02 - Conectarse a GitHub

figure 04 - GitHub project page
Figura 04 - Página del proyecto GitHub

La app más básica jamás creada

Con todo el tema sobre cómo poner nuestro código para el control de versiones, realmente no hemos dedicado mucho tiempo a ver lo que Android Studio había generado. Vamos a hacerlo ahora. Al crear esta aplicación, Android Studio genera una gran cantidad de archivos, aunque solo unos cuantos son realmente importantes para comprender lo que sucede. Estos son los archivos que nos interesan por el momento:

  • app/manifests/AndroidManifest.xml
  • java/com/fakedomain/myhelloworld/MainActivity.java
  • res/layout/activity_main.xml
  • res/values/strings.xml

AndroidManifest.xml

Este archivo es útil desde el punto de vista de que realmente le dice al dispositivo Android qué código se ejecutará cuando la aplicación se inicie por primera vez. Si haces doble clic en el archivo y lo examinas en el IDE, no hay mucho que ver, pero todo lo que contiene es importante para ejecutar correctamente tu aplicación. Dedicaremos tiempo en otra entrega para analizar a fondo lo que realmente hace el archivo por tu aplicación, pero por ahora es suficiente saber que Android Studio se encargará de incluir nuevas actividades y otras funciones de la aplicación en el archivo, al menos hasta que te se sientas más cómodo haciéndolo tú mismo.

MainActivity.java

Éste solo contiene unas cuantas líneas de código, pero dirige al lector a un recurso importante al que sin duda alguna dedicarás tiempo: el archivo de diseño activity_main.xml. Aquí es donde se define el "aspecto general" de la aplicación y es dónde se puede cambiar utilizando las herramientas de diseño visual de Android Studio. Si haces doble clic en el archivo activity_main.xml, el IDE debería mostrarte su editor de diseño visual. Si ves un diseño con un panel de archivo XML al lado, puede que hayas elegido la vista "Text" del diseño. Si haces clic en la pestaña "Design" que se encuentra en la parte inferior del panel, volverá a cambiar. Aunque el diseño es algo escaso, todavía podemos hacer bastante desde aquí. De hecho, si te fijas bien, nuestro texto "Hello World" ya aparece en su lugar en medio de la vista. Aquí entra en juego la denominada Empty Activity: no está completamente vacía, aunque tiene un elemento TextView muy simple en el diseño para que puedas iniciarla. ¿Y qué mejor texto de muestra para poner en un widget de texto que nuestra favorita frase de dos palabras?

figure 05 - Design view
Figura 05 - Vista de diseño

strings.xml

Strings.xml es el último archivo que no debemos perder de vista. La razón de ello es que, como desarrollador de aplicaciones, las buenas prácticas son esenciales y cuanto antes las adoptes, mejor. Para los proyectos puntuales desechables, está bien andar escribiendo valores fijos de texto para los diferentes botones, vistas de texto y controles de navegación, pero en el mundo real hay muchos idiomas, y seríamos realmente cerrados, si no arrogantes, al asumir que el inglés es el único idioma que debería incluir nuestra aplicación. De modo que, modificaremos una configuración para hacer uso de este archivo. Si haces doble clic en el texto "Hello World" en el diseño, verás que aparece el panel de Atributos. Como resultado, el atributo de texto TextView muy probablemente aparecerá resaltado, puesto que has hecho doble clic en el editor de diseño. A la derecha de ese recuadro de atributo, debería ver unos puntos suspensivos (...), sobre los cuales puedes hacer clic para mostrar la ventana de recursos para este proyecto. Dentro encontrarás los recursos que puedes utilizar para el atributo que estás editando.

Figure 06 - String Value Resource Editor
Figura 06 - Editor de recursos de valor de cadena

Como queremos hacer un cambio, haga clic en el elemento de menú "Add new resource" en la esquina superior derecha de la ventana y luego selecciona "New string Value...", se mostrará el cuadro de diálogo "New String Value Resource". Para "Resource name", elije algo sensato como "hello_world_text", y luego define el valor del recurso en "Hello World!” Puedes hacer clic en OK y el valor en el atributo de texto habrá cambiado a "@strings/hello_world_text" pero el diseño seguirá mostrando el valor, que es "¡Hola, mundo!". Si observas strings.xml con el editor de código, verás que hay una nueva línea en el archivo, que Android Studio ha colocado por ti. ¡Genial!

¡Vamos a ejecutarlo!

Ahora tenemos que compilarlo todo y ver que se ejecuta. En la parte superior de la ventana IDE, en el centro de la barra de herramientas verás un icono en forma de martillo verde. Haz clic en él y se compilará el proyecto. Puede tardar algunos minutos dependiendo de la velocidad de tu máquina de desarrollo, pero al final el proceso se completará. A modo de comentario, a pesar de que me encantan los dispositivos ODROID para ejecutar aplicaciones de Android y Linux en general, e incluso el poderoso ODROID-XU4, no son especialmente adecuados para el desarrollo de aplicaciones de esta naturaleza. Simplemente porque se necesita mucha memoria durante el proceso compilación del software, y compilar una aplicación con un cierto contenido al final te llevaría a forzar tu tarjeta eMMC o SD cuando Android Studio tuviese poca memoria, acortando la vida útil de tus soportes de almacenamiento. Pero bueno, tú decides, y si ODROID es con lo que sueles compilar, éste puede hacer el trabajo, aunque es posible que tengas que esperar algo más con determinadas tareas. Ahora que la aplicación está creada, si presionas el triángulo verde "Play", la aplicación se "ejecutará" e intentará conectarse a un dispositivo Android. ¿Qué es eso? ¿No tienes un dispositivo Android a mano? ¿No has visitado la Wiki de ODROID para conectar tu ODROID-C2 utilizando su puerto USB OTG (https://wiki.odroid.com/getting_start/adb_fastboot)? ¿No has iniciado Network ADB en tu ODROID-XU4 (https://wiki.odroid.com/odroid-xu4/troubleshooting/adb_over_tcpip)? Aunque siempre es más provechoso probar una aplicación con un hardware real, si todo lo demás falla, siempre tienes la opción de emular un dispositivo Android.

Figure 07 - Select Deployment Target
Figura 07 - Seleccionar el dispositivo para la implementación

Echar mano de lo virtual (dispositivos)

De modo que, si estás viendo el "Select Deployment Target" y está vacío, puedes hacer clic en "Create New Virtual Device" y aparecerá un catálogo con varios dispositivos Android para hacer pruebas que puedes emular en tu ordenador, desde TVs, tablets, teléfonos hasta dispositivos Android Wear. En nuestro caso, creamos un dispositivo que emule un teléfono, un Nexus 5X. Una vez seleccionado, haz clic en "Next" y continúa eligiendo una de las imágenes del sistema "recomendadas", que en nuestro caso sería Nougat, Oreo o la vista previa "P". Probablemente tengas que hacer clic en el enlace "download" junto a la versión para descargar la imagen antes de continuar y sí, puede llevar un tiempo.

figure 08 - Virtual Device Configuration Editor
Figura 08 - Editor de configuración del dispositivo virtual

Una vez que hayas descargado la imagen, haga clic en "Next", asigna un nombre al dispositivo virtual (o guarda el que genera por defecto Android Studio), cambia la orientación de la pantalla a modo apaisado si estás en pantallas horizontal y haga clic en "Finish". ¡Por fin, tienes un dispositivo para iniciar tu aplicación!

figure 09 - Virtual Device Running Our App
Figura 09 - Dispositivo virtual ejecutando nuestra aplicación

Si todo va según lo previsto, el dispositivo virtual arrancará la versión de Android que descargaste y lo situará en la pantalla de inicio. Unos instantes después, Android Studio se conectará al dispositivo virtual utilizando ADB y ejecutará la aplicación. Puede que no resulte tan gratificante como tener la aplicación ejecutándose en un dispositivo Android real, pero una vez más, nunca podrás poner la excusa de que no tienes un dispositivo Android cuando lo necesitas.

Confirmar los cambios

Toda esta codificación requiere de mucho esfuerzo, y al final de cada sesión de codificación, siempre debe formar parte de tus prácticas habituales confirmar tu trabajo en curso. Soy el primero en decir que cuando trabajas solo en un repositorio de código, nadie se dará cuenta de que tu código no se compila correctamente o que contiene muchos errores y defectos. Te invito a superar esta cuestión. Lo importante es que conserves una copia de seguridad en caso de que suceda algo terrible y de repente te encuentres sin tu estación de trabajo con su almacenamiento de archivos. Para hacer esto, puedes volver al menú de VCS y seleccionar "Commit", existe un atajo de teclado para esto, y también un completo panel de la ventana IDE usado para controlar las versiones. Asegúrate de echarle una ojeada y familiarizarte con él. Verás que al menos han cambiado dos archivos: los archivos activity_main.xml y strings.xml. Puedes echarle un vistazo a los cambios para asegurarte de que son los esperados. Ahora deberías introducir un mensaje de confirmación, en el cual se registrará un historial de los cambios realizados en el código que has comprometido en el repositorio. Yo introduciré algo escueto, como "changed text to use strings.xml". Coloca el puntero del mouse sobre el botón "Commit" en la esquina inferior derecha, y verás que hay algunas opciones adicionales. Para nuestra demo en GitHub, vamos a continuar y seleccionaremos "Commit and Push ..." que mostrará un cuadro de diálogo que te permite agregar etiquetas al push para GitHub. Haga clic en "Push" y ¡listo! Nunca me cansare de hacer hincapié en esta cuestión: asegúrate de verificar los cambios en tu código al final de tu día de trabajo, y no te lamentarás de irte a dormir (y es posible que incluso duermas mejor, (¡No hace falta que me des un abrazo!)

¿Qué es lo siguiente?

Como esta es una nueva columna, pensé que hacer una aplicación “Hello World” sería un comienzo entretenido. Pero, sinceramente, es la aplicación más básica que jamás se ha podido crear. Ahora estoy buscando opciones para trabajar en una aplicación que tenga un cierto sentido implementar en un ODROID-XU4 u ODROID-C1 + / C2 por diversión y que posiblemente implique un buen aprendizaje. Algunas ideas que me vienen fácilmente a la mente pueden ser:

  • Un juego basado en Android TV, que se ejecutara en un ODROID-XU4 con LineageOS Android TV, que utilice los propios dispositivos Tablet o móviles Android de los jugadores para controlar y jugar a un juego de cartas por turnos.
  • Una pantalla táctil personalizada de domótica Android, que se ejecutará en un ODROID-XU4 o ODROID-C2 con LineageOS, que utiliza servicios en segundo plano para comunicarse con otros servidores y dispositivos de domótica para monitorizar y controlar tu hogar sin usar servicios basados en la nube.
  • Un Android Auto, que se ejecutara en un ODROID-C2 con pantalla táctil, que recopile información de tu coche y te permita conectar tu teléfono o tablet Android para reproducir música, navegar, comunicarte e informar del tiempo que pasas al volante.

Si la lista te parece algo intimidante o si te sientes que todo esto es demasiado complicado, simplemente relájate. Estoy aquí para ayudarte y haré todo lo posible para explicarlo todo lo más claramente posible. Reconozco que cada uno de los proyectos a los que he aludido requiere combinar una serie de elementos de hardware y de software que trabajen conjuntamente para proporcionar una solución. De modo que, no te extrañe que haya próximos artículos centrados en el hardware para configurar o, al menos, simular una plataforma de hardware que luego podremos usar para escribir aplicaciones. También habrá ediciones en las que desglosaremos los problemas más graves de los fragmentos de código a los que luego aplicaremos prácticas de arquitectura de aplicaciones basadas en Android para que funcionen de la forma que esperan que lo hagan los usuarios de dispositivos Android. Creo que será una experiencia muy gratificante para todos, y todo se hará con código abierto y estará disponible online para que los futuros desarrolladores de Android puedan utilizarlo. Si crees que estas ideas son horribles y estás convencido de que tienes alguna mejor, ¡Quiero saber de qué se trata! Siempre puede comentar la versión interactiva de ODROID Magazine de este artículo, o visitar el foro ODROID Magazine en https://forum.odroid.com. Lo mejor de e mis artículos es que el código con el que trabajo está disponible online para que lo puedas analizar. No dude en visitar mi cuenta de GitHub en https://GitHub.com/randybuildsthings y reírte de muchas de las cosas tontas que hago. Uso GitHub principalmente para juguetear, espero verte por allí.

Be the first to comment

Leave a Reply