Ubicación personalizada del almacén de datos en una máquina local con App Engine

Estoy desarrollando la aplicación de App Engine en Android Studio y la pruebo en mi máquina local (con el almacén de datos local). Es una aplicación basada en Java. Cada vez que vuelva a ejecutar el servidor del almacén de datos local se borra. He encontrado varias soluciones para los desarrolladores de Python, pero parece que no hay respuesta para Java.

Android Studio sólo permite cambiar:

  • Camino de la guerra
  • VM Args
  • Dirección del servidor
  • Puerto de servicio

He intentado con VM args pero estos son para Java VM no para el servidor de aplicaciones, obviamente. ¿Existe una manera de mantener el almacén de datos local a través de los reinicios del servidor? Sería perfecto si pudiera ejecutar esta configuración directamente desde Android Studio.

El almacén de datos local se borra porque está ubicado de forma predeterminada en el directorio explotado de la aplicación explotada (que se elimina en su totalidad en cada compilación).

En lugar de tener que ejecutar manualmente el servidor de dev desde un terminal, puede agregar un VM arg a la configuración de ejecución de appengine para localizar el almacén de datos en otra ubicación:

-Ddatastore.backing_store="/path/to/datastore/file/location/local_db.bin" 

(Solución encontrada en: https://code.google.com/p/android/issues/detail?id=68225 )

Como dice Arjan, puedes usar -Ddatastore.backing_store .

Si utiliza Android Studio 1.5, modifique build.gradle . En appengine poner el paramater jvmFlags . Ejemplo:

  appengine { downloadSdk = true appcfg { oauth2 = true } jvmFlags = ["-Ddatastore.backing_store=\"D:/temp/local_db.bin\""] } 

Después de varias horas de búsqueda finalmente he encontrado cómo utilizar el archivo definido por el usuario como un almacenamiento local. Desafortunadamente no funciona directamente desde Android Studio, los servidores deben ejecutarse desde el terminal.

Aquí hay argumentos para dev-appserver de Java:

 Usage: <dev-appserver> [options] <app directory> Options: --help, -h Show this help message and exit. --sdk_root=DIR Overrides where the SDK is located. --server=SERVER The server to use to determine the latest -s SERVER SDK version. --address=ADDRESS The address of the interface on the local machine -a ADDRESS to bind to (or 0.0.0.0 for all interfaces). --port=PORT The port number to bind to on the local machine. -p PORT --disable_update_check Disable the check for newer SDK versions. --generated_dir=DIR Set the directory where generated files are created. --default_gcs_bucket=NAME Set the default Google Cloud Storage bucket name. --jvm_flag=FLAG Pass FLAG as a JVM argument. May be repeated to supply multiple flags. 

Tiene que cambiar el argumento generated_dir . Para ejecutar dev server directamente desde el terminal hay un comando muy agradable:

/ Usr / lib / jvm / default-java / bin / java -javaagent: $ HOME / .gradle / appengine-sdk / appengine-java-sdk-1.9.9 / lib / agent / appengine-agent.jar -Xbootclasspath / p : $ HOME / .gradle / appengine-sdk / appengine-java-sdk-1.9.9 / lib / override / appengine-dev-jdk-overrides.jar -Didea.launcher.port = 7533 -Didea.launcher.bin.path = / Opt / android-studio / bin -Dfile.encoding = UTF-8 -classpath $ HOME / .gradle / appengine-sdk / appengine-java-sdk-1.9.9 / lib / appengine-tools-api.jar: Opt / android-studio / lib / idea_rt.jar com.intellij.rt.execution.application.AppMain com.google.appengine.tools.development.DevAppServerMain –address = 0.0.0.0 –port = 8080 –generated_dir = $ HOME / sandbox / $ HOME / app / backend / build / exploded-app

He cambiado el argumento generated_dir a --generated_dir=$HOME/sandbox/

Ten en cuenta que debes proporcionar la ruta de acceso de Android Studio y la versión de SDK de App Engine. Para mi estación de trabajo es /opt/android-studio y appengine-java-sdk-1.9.9 consecuencia.

  • Cómo "Ejecutar como aplicación web" un respaldo de App Engine en Android Studio
  • Cómo crear una gota de mapa de bits en la actividad de Android?
  • Javax.persistence.PersistenceException en el motor de la aplicación de Google conectado al proyecto android
  • Protección de los extremos de la API de Google App Engine
  • El arrancador de backend móvil no puede escribir el ID personalizado en el almacén de datos
  • EOFException durante el uso de puntos finales de google
  • Cómo implementar un GCM Hello World para Android con Android Studio
  • Generar la biblioteca de cliente de punto final de nube de repente dejó de funcionar
  • Google OAuth2 - token de acceso y token de actualización -> invalid_grant / Code ya se redimió
  • Configuración de Proguard al utilizar la plantilla Google Cloud Endpoints de Android Studio
  • Cómo analizar la propiedad DateTime de AppEngine en Java (Android)?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.