Recursos dinámicos de Android usando scripts Bash

¡Hola Mundo!Como desarrolladores de Android, sabemos que hay algunos recursos (es decir, cadena.xml, color.xmletc.) declarado antes del proceso de compilación, luego declarado en el momento de la compilación tipo se crean, se pueden llamar desde nuestro código, p. R.cadena.algún_nombrePero, ¿alguna vez te has preguntado cómo se declara dinámicamente? Bueno, este artículo es sobre eso
Comencemos con las siguientes definiciones. Documentación de Android
recurso son archivos adicionales y contenido estático Su código utiliza, por ejemplo, mapas de bits, definiciones de diseño, cadenas de interfaz de usuario, instrucciones de animación, etc.
Siempre debe externalizar los recursos de la aplicación, como imágenes y cadenas, de su código para que pueda mantenerlos de forma independiente.
Después de externalizar los recursos de la aplicación, Puede acceder a ellos usando el ID de recurso generado en el proyectoR
clase.
Podemos concluir que no hay forma de cambiar estos recursos correrEntonces, debemos dar un paso atrás y usar tiempo de compilación. Cuando presionamos el botón verde de reproducción para instalar la aplicación internamente desde Android Studio, se ejecutan algunos comandos (algunos de ellos son Montaje y depuración y instalación adb).Usaremos bash para crear el script y modificar los recursos de Android antes de la ejecución. ensamblar Depurar (ver Figura 1).

Supongamos que el sistema backend envía el recurso listo para ser utilizado en nuestro cliente (android) y consideremos usar color.xml Tome los recursos por ejemplo.Entonces, nuestro plan es descargar el recurso y reemplazar el local color.xml con archivos remotos (ver Figura 2)

Para completar los dos primeros pasos, se debe crear y ejecutar un script bash.Veamos cómo se ve un recurso de color remoto
Ahora, para el script bash (vea la Figura 3), expliquemos cómo funciona.

- LOCAL_COLOR_RESOURCE_PATH=’aplicación/src/main/res/valores/’ Cree una variable y mantenga presionada la ruta a la carpeta que contiene nuestro local color.xml documento
- curl «$URL» — imprime $REMOTE_COLOR_RESOURCES_NAME
Llame al punto final con la $URL donde se encuentra el recurso remoto y guarde el archivo localmente. - mv -f $REMOTE_COLOR_RESOURCES_NAME $LOCAL_COLOR_RESOURCE_PATH
reemplazar el archivo local actual color.xml con un archivo remoto con el mismo nombre color.xml
Ahora, necesitamos ejecutar nuestro script con el siguiente comando y ver el resultado.
./configuración.sh

Veamos cómo se ve nuestra aplicación sin ejecutar el script bash (ver Figura 4). Como puede ver, toma estos colores declarados sin cambiarlos.

Finalmente, ejecutemos todos los comandos juntos (Figura 5). Como puede ver, el recurso ha cambiado y podemos ver el resultado en el dispositivo después del proceso de instalación.
./configuration.sh && ./gradlew ensamblarDepurar instalarDepurar

Como puede ver, muchas cosas se pueden configurar usando scripts Bash. Probablemente el caso más útil se encuentre en un entorno de CI/CD. Imaginemos que tenemos una aplicación de plantilla con diferentes clientes. Solo necesitamos descargar nuestros recursos y construir nuestra aplicación.Si quieres ver el código completo, echa un vistazo a lo siguiente Repositorio Github.
Y eso no es todo. El siguiente paso será el desafío de obtener recursos que no están listos para el cliente de Android y ver cómo podemos usar bash scripts u otras herramientas para lograr el mismo resultado.
¡Gracias!