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:
- Credenciales de la cuenta de servicio de Firebase Permiso de lectura de Json leído
- La autenticación de Android en las cuentas de Google se transmite a Google App Engine
- Cómo integrar la autenticación firebase con los puntos finales del motor de aplicaciones de Google
- Sube fotos de la aplicación de Android a Google Cloud Storage / App Engine - carácter ilegal '_'
- Pruebas locales para la aplicación de Android que utilizan puntos finales de Cloud para Google App Engine
- 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.
- Google Cloud Messaging para Android Library no se encuentra en el administrador de sdk
- Enviar datos de imagen a la aplicación Android desde App Engine
- Aplicación de ejemplo de motor de aplicaciones de Google que arroja 503
- Google Cloud Endpoint continúa lanzando una excepción de "final inesperado"
- Enviar mensaje desde el complemento del navegador web a android y la aplicación IOS usando XMPP
- Permitir que sólo mis aplicaciones Android ejecuten api de punto final en java
- La importación com.google.api.client no se puede resolver en Eclipse
- Configuración de Proguard al utilizar la plantilla Google Cloud Endpoints de 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