En nuestros proyectos es habitual usar APIs de terceros que nos permiten añadir funcionalidades sin tener que desarrollarlas nosotros mismos.

Muchas APIs requieren el uso de keys que habremos obtenido al registrarnos como developers en algún servicio (Twitter, Facebook, Instagram, etc…) y solemos almacenar dichas keys en la típica utils.class o apiKeys.class…

Cuando subimos nuestro código a un repositorio público cambiamos las keys de estos archivos por el famoso “YOUR_POCKET_APIKEY_HERE”, y como son clases que en algún momento vamos modificando, no las ponemos en ignore, por lo que cada vez que comiteamos tenemos que tenerlo presente.
 

Un día, por descuido, subirás tus keys, y lo sabes…

¿Cómo evitarlo? Pues en un proyecto open source vi el método que os explico a continuación y me gustó mucho. Veréis que es muy fácil de implementar, vamos allá…

Pongamos que nuestra app de Android tiene dos keys, CUSTOMER_KEY y CUSTOMER_SECRET, almacenadas en una utils.class like this:

 

2.jpg

 

La idea es tener un archivo de texto en el proyecto, que en el repositorio marcaremos como ignore, y configuraremos Gradle para que compruebe la existencia de este archivo. Si existe recogerá las keys correspondientes y si no creará unas que definamos nosotros.

Primero configuraremos Gradle (build.gradle “Module app”). Añadiendo en Android -> defaultConfig el siguiente código:

 

secrets.properties será el archivo de texto que contendrá las keys y se encontrará en el root del proyecto.

Con if (secretsExists.exists()) comprobamos si existe y si es así añadimos tantos campos como keys tengamos en el archivo, en este caso CONSUMER_KEY y CONSUMER_SECRET de tipo String.

Si el archivo secrets.properties no existe crearemos dos campos con los mismos nombres pero con valores inventados.

Siguiente paso será modificar nuestra utils.class para que recoja de buildconfig las propiedades creadas.
 

Si ahora ejecutamos nuestra app, y al no existir aún el archivo que contiene las keys, veríamos lo siguiente:

 

 

Por último añadimos nuestro secrets.properties en el root del proyecto
 

y una vez creado el archivo si volvemos a ejecutar nuestra app…

 

 

Recordar marcar como ignore en nuestro repositorio este archivo. Cuando alguien se descargue nuestro proyecto deberá crearse su propio secrets.properties, lo indicaremos en el read.me del repositorio indicando el formato que ha de tener.
 

Easy 🙂

Foto de cabecera: Intel Free Press / Flickr
Android,Medalla Blogger,Open,Programación,