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.

  • Endpoints de Google App Engine Cloud userId es nulo
  • Google App Engine y Android
  • ¿Cómo obtener acceso a las API de Google Cloud Save en android studio?
  • Puntos finales de Google Cloud: verifyToken: La longitud de la firma no es correcta
  • Google App Engine - escala automática con siempre en instancia?
  • Variedad de errores en la aplicación Mobile Backend Starter Sample
  • Notificación Push mediante Firebase y Google Cloud Messaging
  • No se puede importar la clase de biblioteca de cliente de nodos de nube de google en el proyecto de Android
  • ¿Cuáles son las dependencias de gradle necesarias para un backend de App Engine con Google Cloud Messaging?
  • JPA y Android
  • ¿Cómo puedo restringir el acceso de la API de Endpoints de Google App Engine a sólo mis aplicaciones de Android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.