Ir al contenido principal

De Visual Studio a Android Studio: Gestión segura de secretos con Secrets Gradle Plugin

De Visual Studio a Android Studio: Gestión segura de secretos con Secrets Gradle Plugin

Todo comenzó mientras trabajaba en un proyecto .NET en Visual Studio. Una de las herramientas que más valoré fue su sistema para manejar secretos: poder almacenar claves API y credenciales de manera segura, sin exponerlas en el código fuente, me daba tranquilidad. Cuando cambié de contexto y comencé a trabajar en un proyecto de Android con Kotlin, me pregunté: ¿Cómo puedo lograr algo similar aquí?

No pasó mucho tiempo antes de que encontrara la respuesta: el Secrets Gradle Plugin.


El problema: Secretos expuestos en el código fuente

Si alguna vez has trabajado con claves API o credenciales, sabes lo importante que es mantenerlas seguras. Sin embargo, es común encontrar proyectos donde estas claves se almacenan directamente en el código o en archivos de configuración que terminan siendo expuestos en el control de versiones. Esto no solo es un riesgo de seguridad, sino también una mala práctica.

Ahí es donde el Secrets Gradle Plugin entra en juego. Este plugin está diseñado específicamente para proyectos de Android y te permite gestionar tus secretos de forma segura, ocultándolos del código fuente y del control de versiones.


Configuración del Secrets Gradle Plugin

Paso 1: Instalar el plugin

Primero, agregué el plugin en el archivo build.gradle.kts a nivel de proyecto:


plugins {
    id("com.google.android.libraries.mapsplatform.secrets-gradle-plugin") version "2.0.1"
}

Luego, lo apliqué en el archivo app/build.gradle.kts del módulo principal:


plugins {
    id("com.google.android.libraries.mapsplatform.secrets-gradle-plugin")
}

Paso 2: Crear un archivo para los secretos

El siguiente paso fue crear un archivo llamado secrets.properties en la raíz del proyecto. Aquí fue donde almacené mis claves API de manera segura:


MAPS_API_KEY=mi_clave_secreta
FIREBASE_KEY=otra_clave_secreta

Para asegurarme de que este archivo no se subiera al repositorio, añadí lo siguiente al archivo .gitignore:


secrets.properties

Paso 3: Acceder a los secretos en el código

Con el plugin configurado, acceder a las claves fue increíblemente sencillo. Primero, las expuse en el archivo de configuración de Gradle:


android {
    defaultConfig {
        buildConfigField("String", "MAPS_API_KEY", "\"${secrets.get("MAPS_API_KEY")}\"")
    }
}

Esto generó automáticamente una constante en la clase BuildConfig, que luego pude usar en mi código de esta manera:


val apiKey = BuildConfig.MAPS_API_KEY

Características avanzadas

El Secrets Gradle Plugin también ofrece características adicionales que lo hacen aún más útil:

  1. Propiedades específicas por variante de compilación:
    Puedes crear archivos separados para diferentes variantes, como release.properties, para usar claves específicas en caso de producción:
    
    MAPS_API_KEY=clave_para_release
        
  2. Archivo de valores por defecto:
    Puedes crear un archivo secrets.defaults.properties con valores seguros para usar en entornos de CI/CD o para compartir con otros desarrolladores:
    
    MAPS_API_KEY=clave_generica
        
  3. Ignorar claves específicas:
    Si hay claves que no deseas gestionar con el plugin, puedes ignorarlas fácilmente:
    
    secrets {
        ignoreList.add("sdk.*")
    }
        

El resultado: Seguridad con facilidad

Con este plugin, pude mantener mis claves seguras y fuera del control de versiones, sin complicaciones. Fue como traer la magia del manejo de secretos de Visual Studio a Android Studio. Pero lo mejor de todo es que el Secrets Gradle Plugin es fácil de usar y altamente configurable.


Conclusión

Si estás trabajando en un proyecto de Android y necesitas gestionar secretos de manera segura, el Secrets Gradle Plugin es la herramienta que estabas buscando. No solo protege tus claves, sino que también mejora la organización y la limpieza de tu proyecto.

¿Listo para dar el siguiente paso en la seguridad de tus aplicaciones? ¡Prueba el Secrets Gradle Plugin y disfruta de la tranquilidad de proteger tus secretos como nunca antes!

Comentarios

Entradas populares de este blog

De Coverlet a JaCoCo: Trayendo la magia de la cobertura a Android Studio

Todo comenzó un día cualquiera, mientras revisaba un reporte de cobertura de pruebas generado por Coverlet para un proyecto en .NET. Me quedé fascinado por el nivel de detalle y claridad que proporcionaba: saber exactamente qué partes del código estaban cubiertas por las pruebas, y cuáles no. Fue entonces cuando me pregunté: ¿Y si pudiera tener algo así en mi proyecto de Android con Kotlin y Jetpack Compose? La Chispa Inicial ✨ Como desarrollador, siempre busco mejorar la calidad de mi código, y contar con herramientas que me permitan medir la cobertura de pruebas es clave. Después de una rápida búsqueda, me topé con **JaCoCo**, una herramienta muy popular para medir cobertura de código en proyectos Java y Kotlin. ¡Lo mejor de todo es que es compatible con Android Studio! Mi objetivo estaba claro: debía integrar JaCoCo en mi proyecto de Android para tener reportes detallados de cobertura, tal como lo había visto en Coverlet. El Desafío: Configurar JaCoCo en un Proyecto Android 🛠️ El p...

Guía Definitiva de Estrategias de Branching en Git: Elige la Mejor para tu Equipo

Imagina esta situación: lideras un equipo de desarrollo y todos están enviando código al mismo tiempo. Sin una estrategia de ramas (branching) clara, tu base de código se convierte rápidamente en un caos de conflictos, compilaciones rotas y desarrolladores frustrados. ¿Te suena familiar? Si alguna vez te has encontrado en este lío, no estás solo. Una estrategia de branching en Git es el mapa que tu equipo necesita para gestionar los cambios de código, colaborar de manera efectiva y entregar software de calidad. Es, en esencia, un conjunto de reglas que define cómo los desarrolladores interactúan con el repositorio, cuándo crear ramas, cómo fusionar cambios y cómo mantener la estabilidad del código en todo el ciclo de vida del desarrollo. Pero es más que solo reglas. Una buena estrategia de branching se alinea con la forma en que trabaja tu equipo: tus ciclos de lanzamiento, los flujos de trabajo de QA, tus pipelines de CI/CD e incluso la frecuencia con la que necesitas aplicar correcc...

Inyección de Dependencias usando Hilt

Inyección de Dependencias usando Hilt La Inyección de Dependencias (DI) es fundamental para construir aplicaciones Android robustas, escalables y fáciles de testear. Mientras que existen varias librerías para lograrlo, Hilt se ha establecido como la solución recomendada y estándar de Google. Construido sobre la potencia de Dagger, Hilt simplifica enormemente la implementación de DI en Android. Si buscas una forma estandarizada, con menos boilerplate que Dagger puro y con excelente integración con los componentes de Android Jetpack, Hilt es la respuesta. ¡Descubramos cómo funciona! ¿Por qué elegir Hilt? Hilt ofrece ventajas significativas para el desarrollo Android: Estándar de Android: Es la librería DI recomendada por Google, lo que asegura buena documentación, soporte y alineación con las prácticas modernas de Android. Menos Boilerplate (vs. Dagger): Reduce drásticamente el código de configuración necesario en comparación con usar Dagger directamente en Andr...