Die Google Cloud-Endpunkte-Clientbibliotheksklasse kann nicht im Android-Projekt importiert werden

8

Ich habe Schwierigkeiten, Google Cloud Endpoints zum Laufen zu bringen. Ich habe ein Python-Endpunkte-Projekt auf GAE und es funktioniert perfekt mit dem API-Explorer. Allerdings habe ich Probleme, die Client-Bibliothek ordnungsgemäß zu generieren und in meiner Android-App zu verwenden. Ich habe eine Reihe von Beispielprojekten ausprobiert und habe jedes Mal das gleiche Problem. Ich kann die Modellklassen aus den Clientbibliotheken nicht importieren und verwenden.

Hier ist, was ich tue (in diesem Beispiel verwende ich das Helloworld-API-Python-Beispiel unter Ссылка )

  1. Entpacken Sie den Beispielcode
  2. Generieren Sie die Client-Bibliothek, indem Sie zum Ordner navigieren und

    ausführen %Vor%
  3. Entpacken Sie den generierten Ordner und kopieren Sie ihn in den Projektstamm in eclipse

  4. Fügen Sie in Eclipse "your_app_id_appspot_com-helloworld-v1-20140310110152-java-1.17.0-rc-sources.jar" hinzu, um den Pfad zu erstellen (Klicken Sie mit der rechten Maustaste auf den JAR & gt; Build-Pfad & gt; Zum Build-Pfad hinzufügen) >

In diesem Stadium kann ich com.appspot.your_app_id.helloworld.model.* importieren, aber ich kann com.appspot.your_app_id.helloworld.model.Greeting

nicht importieren

Kann jemand etwas Licht auf das werfen, was hier passiert? Ich habe viele verschiedene Wege ausprobiert, um das zum Laufen zu bringen, habe aber jedes Mal das gleiche Problem.

Vielen Dank,

Tom

    
Tom 10.03.2014, 14:35
quelle

3 Antworten

4

Das Problem ist, dass die generierte ZIP-Datei standardmäßig nur ein Quellen-Jar enthält, nicht ein tatsächlich kompiliertes Bibliotheks-Jar, das Ihre Android-App verwenden kann.

Hier ist die Lösung:

  1. Generieren Sie in Ihrem Backend-API-Ordner (von der gleichen Stelle aus, an der sich Ihre app.yaml befindet) die Client-Bibliothek wie folgt:
    <gae-sdk-path>\endpointscfg.py get_client_lib java -bs gradle helloworld_api.HelloWorldApi

  2. Sie haben jetzt eine helloworld-v1.zip. Entpacken Sie dieses (entweder hier oder an einem anderen Ort wie ~ / temp)

  3. Dadurch wird ein Ordner namens helloworld erstellt, der sollte einen build.gradle mit einem src-Ordner enthalten.

  4. Erstellen Sie Ihre Client-Bibliothek mit "grdle install" in diesem Ordner.

  5. Kopiere build/libs/helloworld-v1-1.X.X-SNAPSHOT.jar in den libs-Ordner deiner Android-App.

  6. Fügen Sie es als Bibliothek in Android Studio hinzu, indem Sie mit der rechten Maustaste auf / add-as-library klicken.

  7. Ihre Klassen sollten nun korrekt aufgelöst werden.

Schritt 4 sollte die gerade erstellte Client-Bibliothek in Ihrem lokalen Maven-Repository installieren. Sie können den Anweisungen in liesmich.html im Ordner helloworld / folgen, die Sie extrahiert haben, um sie direkt in das Android-App-Build-System zu integrieren, anstatt das manuell erstellte jar zu kopieren.

    
PacificSky 01.11.2014, 08:49
quelle
0

In diesem Post wurde ein Fehler mit der Add As Library von Android Studio gemeldet: Android Studio: IncorrectOperationException, wenn auf" Als Bibliothek hinzufügen "geklickt wird, während versucht wird, Google Apps Endpoints-Client-Bibliotheken zu konfigurieren

Nicht sicher, ob es für Eclipse gilt.

    
domchan 13.03.2014 18:53
quelle
0

Ich konnte dieses Problem lösen und habe die folgende Lösung bereitgestellt.

Ich habe von Eclipse auf Android Studio Preview 0.4.6 umgestellt, was dabei geholfen hat, einige Probleme beim Importieren der Googles-Bibliothek loszuwerden (ich denke, build.gradle config). Ich denke, es war kein Problem von Eclipse, das ich früher benutzt habe.

Ich konnte die Importprobleme beheben. Der Code in den Lernprogrammsegmenten der offiziellen Google-Dokumente muss synchronisiert werden.

Die Lösung besteht darin, ungefähr die folgenden Änderungen vorzunehmen:

Ersetzen Sie in MainActivity.java :

%Vor%

Fügen Sie in MainActivity.java oben Folgendes hinzu:

%Vor%

Geben Sie in MainActivity.java oben Folgendes ein:

%Vor%

Fügen Sie in Application.java oben Folgendes hinzu:

%Vor%

Ersetzen Sie in Application.java :

%Vor%

Hoffe das spart Zeit für andere

    
gsinha 17.04.2014 18:46
quelle