Un paso más en la profesionalización de esto. Git y Proguard.

Llevo ya algo de tiempo trabajando con LibGDX para crearme mi propio framework donde me sea más cómodo crear futuros juegos 2D para móviles. Voy a hablar un poco de dos puntos que acabo de agregar a mi proyecto que son dignos de mención.

Git

Cuando se trabaja durante meses en un proyecto es conveniente hacerte copias de seguridad del mismo para evitar posibles perdidas catastróficas irrecuperables (se te rompa el disco duro, se quede corrupto el archivo -esto pasa mucho-). Y no importa si estas trabajando con Unity, Game Maker, C++,... es vital hacer copias de seguridad con frecuencia para recuperar código ante una catástrofe o si deseas regresar a como lo tenias antes de meter esa funcionalidad nueva que en teoría iba a quedar tan chula pero ya no te gusta :S

Hasta ahora copiaba la carpeta del proyecto y lo comprimía como archivo "rar", agregándole la fecha al nombre. Luego lo subía a un servicio en la nube como Google Drive. Esto no es práctico.

Lo optimo es usar un software control de versiones, he aquí unas cuantas ventajas de porque usar una herramienta como GIT:

  • Rapidez: Lo que antes tardaba minutos, ahora se hace en segundos.

  • Espacio: Mi carpeta del proyecto ocupaba 35 MB, por cada vez que necesitaba hacerme una copia de seguridad son 35 MB más. Mientras que git, solo agrega las modificaciones a los archivos que vayas haciendo.

  • Comodidad: Lo que antes era irme a la carpeta del proyecto, comprimirlo, irme a Google Drive, subir el rar, esperar que se suba, ahora solo son 2 clics y varios segundos.

  • Optimo: Puedo comparar el código que estuve haciendo hace dos meses con el de ahora. Puedo si quiero que el código sea exactamente igual que el de hace dos meses, y puedo volver al del día de hoy, todo ello con varios clicks.

  • Varias ramas de desarrollo: Puedo tener dos lineas de desarrollo, una de "desarrollo" y otra de "producción". La primera con el contenido nuevo que desee agregar y la segunda para lo que hay publicado en este momento, lo cual si tengo que corregir algún bug en la versión públicada, solo tengo que irme a la linea de "producción", solucionarlo, publicarlo (sin tener los cambios de la versión de desarrollo), y luego añadir esos cambios a toda la funcionalidad nueva que este implementado en la rama de "desarrollo" y seguir con mi nueva funcionalidad. ¡No me quiero ni imaginar lo tedioso que seria hacer todo esto con archivos comprimidos .rar!

  • Copia de seguridad en otro servidor: Esto no es algo exclusivo de git, puedes hacerlo con archivos rar. Pero su copia se hace tan rápida (también en segundos), que merece ser destacada.

Así que he invertido un par de días, en refrescar mis conocimientos de git, y en hacerme un repositorio en la nube (a modo de backup).

Proguard

Si ya de por si es bastante duro tardar meses en desarrollar algo, bastante peor es que llegue alguien decompile tu apk, y hackee tu app en segundos, o peor aun que haga un clon de tu app en cuestión de días.
Decompilar tu app, dicho de una manera bruta, es el proceso por el cual se transforma el compilado de una app en código inteligible (que se pueda leer, vamos el mismo codigo que escribiste en tu IDE), existen algunos programas para ello.

Gracias a dios existe un remedio para evitar esto, este es Proguard. Proguard se vende como un osfuscador y optimizador de codigo fuente. Una vez que añades proguard al proceso de compilado de tu app, el codigo que se ve despues de decompilarlo es practicamente ininteligible.

He hecho una prueba sin usar Proguard, y al decompilarlo pude ver todo mi código fuente escrito. Vamos igualito, igualito. Despúes de añadir Proguard ha quedado totalmente ininteligible:

Nota: Proguard es un mundo, pero los errores que da según las librerias de tu proyecto es otro. Hay que hacer mucho "ensayo-y-error" hasta dar con la tecla. Me ha llevado casi todo el día de hoy evitar los errores y echarlo andar.

Moraleja

No seré yo el más indicado para recomendar ambas features, pero quizá si existe alguien mas experimentado que recomienda estas y otras practicas para todo desarrollador de Android.

Es tiempo gastado en el que no vislumbras un progreso real en tu proyecto, pero si que te desarrollas mas como programador y hace que seas mas eficiente a largo plazo.

Imagen de cabecera sacada de aquí

josemwarrior

Read more posts by this author.

Subscribe to @josemwarrior

Get the latest posts delivered right to your inbox.

or subscribe via RSS with Feedly!