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:
- Cambio de token de autenticación de Facebook
- Google App Engine - Demasiadas operaciones de lectura de almacenes de datos
- No se puede conectar a los puntos finales gae locales del emulador de Genymotion
- Integre firebase auth con los puntos finales de la nube de motores de aplicaciones de Google
- ¿Cómo utilizar la cuenta de google en tu propia aplicación de Android?
- 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.
- La autenticación de Android en las cuentas de Google se transmite a Google App Engine
- GoogleJsonResponseException: 404 No se encuentra utilizando el motor de punto final de google apps backend
- Google App Engine y Android (OAuth, C2DM o Cloud Messaging)
- OnHandleIntent no se llama
- Copia de seguridad de datos de Google Cloud Almacén de datos Vs google drive Vs otro servicio de almacenamiento
- El inicio de Backend para móviles subscribeToCloudMessage no funcionará
- GCM duplicó mensajes
- Cómo desarrollar el backend de Google App Engine con 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 funciona un png 9patch en aplicaciones Android
- La conexión con adb fue interrumpida y los intentos de reconectar han fallado