No se puede importar la clase de biblioteca de cliente de nodos de nube de google en el proyecto de Android

Tengo dificultades para que Google Cloud Endpoints funcione. Tengo un proyecto de extremos de Python que funciona en GAE y funciona perfectamente usando el explorador del api. Sin embargo estoy luchando para generar correctamente la biblioteca del cliente y utilizarlo en mi aplicación de Android. He intentado una serie de proyectos de ejemplo y tienen el mismo problema cada vez; No puedo importar y utilizar las clases de modelo de las bibliotecas cliente.

Esto es lo que estoy haciendo (para este ejemplo usaré el ejemplo de python de api de helloworld en https://github.com/GoogleCloudPlatform/appengine-endpoints-helloendpoints-python )

  1. Descomprimir el código de ejemplo
  2. Genere la biblioteca del cliente navegando a la carpeta y ejecutándose

    <gae-sdk>\endpointscfg.py get_client_lib java helloworld_api.HelloWorldApi 
  3. Descomprimir la carpeta generada y copiarla en la raíz del proyecto en eclipse

  4. En Eclipse, agregue "your_app_id_appspot_com-helloworld-v1-20140310110152-java-1.17.0-rc-sources.jar" para crear ruta de acceso (Haga clic con el botón derecho en JAR> Construir ruta> Agregar a la ruta de construcción)

En este momento, puedo importar com.appspot.your_app_id.helloworld.model.* Pero no puedo importar com.appspot.your_app_id.helloworld.model.Greeting

¿Puede alguien arrojar alguna luz sobre lo que está sucediendo aquí? He intentado muchas maneras diferentes conseguir esto trabajar pero tener el mismo problema cada vez.

Muchas gracias,

Tom

El problema es que, de forma predeterminada, el archivo zip generado sólo contiene un jar de fuentes, no un jar de biblioteca compilado real que puede utilizar tu aplicación de Android.

Aquí está la solución:

  1. En su carpeta de api del backend (desde el mismo lugar donde se encuentra su app.yaml), genere la biblioteca del cliente como una biblioteca de gradle, de la siguiente manera:
    <gae-sdk-path>\endpointscfg.py get_client_lib java -bs gradle helloworld_api.HelloWorldApi

  2. Ahora tendrás un helloworld-v1.zip. Descomprimir esto (ya sea aquí o en algún lugar conveniente como ~ / temp)

  3. Esto creará una carpeta llamada helloworld, que debería tener un build.gradle allí junto con una carpeta src.

  4. Construya su biblioteca cliente utilizando "gradle install" en esta carpeta.

  5. Copie build/libs/helloworld-v1-1.XX-SNAPSHOT.jar en la carpeta libs de su aplicación Android.

  6. Añádelo como una biblioteca en Android Studio haciendo clic derecho / add-as-library.

  7. Ahora tus clases deben resolverse correctamente.

El paso 4 debe instalar la biblioteca del cliente recién construida en su repositorio local de maven. Puedes seguir las instrucciones de readme.html en la carpeta helloworld / que has extraído para integrarte directamente con el sistema de compilación gradle de tu aplicación Android en lugar de copiar el frasco que construyes manualmente.

Esta publicación indicó que hay un error con la adición como biblioteca de Android Studio: Android Studio: IncorrectOperationException cuando se hace clic en "Agregar como biblioteca" mientras se intenta configurar las bibliotecas cliente de Endpoints de Google Apps

No estoy seguro de si se aplica a Eclipse.

Pude resolver este problema y he proporcionado la solución a continuación.

Cambié a Android Studio Preview 0.4.6 de Eclipse, que ayudó a deshacerse de algunos de los problemas de importación de la biblioteca de Googles (a través de supongo build.gradle config). Siento que no era un problema de Eclipse el cual estaba usando antes.

Fui capaz de arreglar los problemas de importación. El código de los segmentos de tutorial en los documentos oficiales de Google debe sincronizarse.

La solución es hacer los siguientes cambios:

En MainActivity.java , reemplace:

 HelloGreeting with HelloworldApiGreeting 

En MainActivity.java , agregue lo siguiente en la parte superior:

 import android.widget.Toast; import android.os.AsyncTask; import android.util.Log import com.appspot.androidbackend1.helloworld.model.HelloworldApiGreeting; import com.appspot.androidbackend1.helloworld.model.HelloworldApiGreetingCollection; 

En MainActivity.java , comente lo siguiente en la parte superior:

 import com.appspot.androidbackend1.helloworld.Helloworld.Greetings.Multiply; import com.appspot.androidbackend1.helloworld.model.HelloGreeting; 

En Application.java , agregue lo siguiente en la parte superior:

 import com.appspot.androidbackend1.helloworld.model.HelloworldApiGreeting; 

En Application.java , reemplace:

 HelloGreeting with HelloworldApiGreeting 

Espero que esto ahorre tiempo para otros

  • Reproducción de multiplataforma, móvil, MIDI en Python para Kivy - ¿es esto posible?
  • Ejecución de script python en el emulador de terminal android
  • Desarrollo de Android en Python Realistic
  • Recuperación Inception5h modelo de TensorFlow Android Cámara Demo
  • Ejecución de hello.py desde un proceso Android
  • ¿Cuáles son los posibles problemas de rendimiento en el uso de python over java para el desarrollo de aplicaciones para Android?
  • Agregue pesos al archivo .pb exportado por TensorFlow
  • Error de la aplicación GAE Python (servicios de usuario) en Android Chrome con varias cuentas de Google asociadas
  • ¿Quieres usar las bibliotecas de Python en Android?
  • Teclado en pantalla de Android que oculta Python Kivy TextInputs
  • Integración de API de OLA que da error como clave de socio no válida
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.