viernes, 21 de septiembre de 2012

Actualizar la aplicación sin volver a compilar

Algunas veces, ya teniendo la aplicación compilada y subida a los markets, nos vemos en la necesidad de hacerle algún cambio que tal vez no sea demasiado grande.

La primer alternativa que surge es volver a compilar la aplicación y volver a subirla a los markets. El problema que tiene esto, sobre todo con Apple, es que el proceso puede ser complejo y lleva tiempo.

Para las aplicaciones generadas con GeneXus, tenemos una alternativa que puede ser mejor.

En GeneXus X Evolution 2, las aplicaciones de Smart Devices se componen de dos partes: los binarios de la aplicación y la metadata. Los binarios no cambian (a menos que se cambie la versión de GX), lo que cambia entre aplicaciones es la metadata.

La metadata tiene la información de los layouts (es decir que elementos hay en pantalla y como se muestran), acciones (tanto la action bar como el código de los eventos), los datos que tiene cada proveedor de datos de las pantallas, los temas, etc.

Esta metadata es interpretada por el KBN cuando se usa para prototipar, pero también es interpretada por la aplicación compilada. La diferencia entre los dos métodos es que el KBN siempre busca la metadata en el servidor, mientras que la aplicación compilada usa la metadata local.

El procedimiento entonces para actualizar la aplicación sin tener que volver a compilar, es lograr que la aplicación compilada lea la nueva metadata. La forma de hacerlo está explicada en el Wiki, así que no lo voy a repetir acá... pero consiste en cambiar el minor version de la aplicación para que esta se entere que tiene un cambio.