martes, 5 de marzo de 2013

Un Adelanto... Aplicaciones Offline con base de datos precargadas

La nueva versión de GeneXus tiene el nombre de TILO. Es donde el equipo de desarrollo de Artech esta trabajando fuertemente aumentando la evolución en Web y continuando la revolución en Smart Devices.
Ya están los nightbuilds de esta versión hace tiempo y varios beta testers (unite!!) ya han hecho aplicaciones  usando una de las features mas importantes de esta versión; la posibilidad de generar aplicaciones offline para Smart Devices.

Si todavía no has leído nada sobre las aplicaciones offline, recomiendo que veas las siguientes charlas de dos integrantes del equipo de Artech.

Las aplicaciones offline tienen una base de datos en los dispositivos, esta es creada cuando se instala la aplicación y luego queda lista para ser poblada. Se puede poblar consumiendo servicios rest mediante procedimientos (ejecutados en el dispositivo) o mediante interacción del usuario.

En algún escenario podemos querer que la aplicación tenga pre cargada su base de datos, sin tener que ejecutar ninguna acción desde la aplicación.

Para lograr esto se tiene los siguientes pasos:
NOTA: Estos pasos son únicamente para dispositivos/aplicaciones Android.
  1.  Si no se tiene el teléfono rooted, no se tiene acceso a la base de datos, a no ser se cambie el template para generar la base de datos en la sd card)
    Para eso hay que ir a <directorio de instalación de gx TILO>\\Android\Templates\src\com\genexus\namespace\MainApplication.java
    y cambiar la linea que dice:
    application.setUseInternalStorageForDatabase(true);
    por:
    application.setUseInternalStorageForDatabase(false);
  2. Con eso hay que generar la app de vuelta e instalarla. Ahí se puede llenar/modificar la base de datos y va a quedar en la sdcard en el path:
    \Android\data\<namespace>\files\db\<main>.sqlite
    Ejemplo:
    \Android\data\com.artech.salesforceoffline.posoffline\files\db\salesforceoffline.sqlite
  3. Copiar dicho archivo a la pc y renombrar <KB>.sqlite a <KB>_sqlite
  4.  Copiar este archivo al directorio de la kb donde se genera el apk android:
    \mobile\Android\<Main>\res\raw\
    Ejemplo:
    \mobile\Android\PosOffline\res\raw\
    Quedaría el archivo:
    \mobile\Android\PosOffline\res\raw\salesforceoffline_sqlite
  5. Luego de esto se arma el .apk de nuevo (F5 con startup object SD). El nuevo .apk incluye la BD en el mismo y la usa como BD inicial.

De esta manera logramos tener una base de datos con datos iniciales sin necesitar ninguna interacción por parte del ususario.

No hay comentarios:

Publicar un comentario en la entrada