Google Play Services im Emulator, Implementierung der Google Plus-Anmeldeschaltfläche usw.

Bei der Integration einer Google Plus-Anmeldeschaltfläche in eine Android-App beobachte ich einige Unterschiede in der Darstellung der Schaltfläche auf einem tatsächlichen Gerät und im Emulator. Mir ist bewusst, dass die Google Plus-Dienst-APKs nicht im Emulator installiert sind, aber das kann man umgehen, indem man die APKs von einem Gerät zieht und sie mit APK im Emulator installiert.

Meine aktuelle “Implementierung” beinhaltet einfach die Login-Schaltfläche in einem Layout, indem Sie auf die Schaltfläche mit dem folgenden XML-Code verweisen:

 

Wenn ich meine App auf dem Gerät teste, erscheint die Schaltfläche laut den hier genannten Richtlinien https://developers.google.com/+/mobile/android/sign-in rot und glänzend. Aber wenn man auf dem Emulator läuft, ist es nur eine normale Schaltfläche (grauer Hintergrund mit schwarzem Text), die “Anmelden bei Google” sagt.

Irgendeine Idee, warum die Ergebnisse anders sind? Ich habe sichergestellt, dass ich die gleiche API-Ebene benutze, und die Ressource scheint auch auf dem Emulator richtig eingezogen zu werden, da sie die eigentliche Login-Schaltfläche anzeigt (aber mit einem anderen Aussehen).

Update: Einen Hinweis in logcat gefunden; die Meldung “Schaltfläche wird nicht gefunden, stattdessen Platzhalter verwendet” erklärt ziemlich genau warum ich den grauen dumpfen Knopf auf dem Emulator sehe. Ich muss immer noch herausfinden, warum. könnte der “Kopie google plus apk’s von Gerät” Hack nicht richtig funktioniert.

Google Play-Dienste funktionieren mit den 4.2.2-Versionen des Android-Emulators und werden offiziell unterstützt, wie in der Android-Dokumentation beschrieben: Google Play Services einrichten .

Aktualisieren

Sie können nun die Intel / x86-Bilder (HAXM-kompatibel) für API 19 und neuer verwenden, und für ARM sind die Google Play-Dienste für die meisten Bilder verfügbar.

Einrichten des Bildes

So erhalten Sie das richtige Image für Ihren virtuellen Gerätemanager:

  • Öffnen Sie den Android SDK-Manager
  • Öffne die Gruppe Android 4.2.2 (API 17)
  • Überprüfen Sie die Google APIs
  • Überprüfen Sie ARM EABI v7a Systemabbild

Bildbeschreibung hier eingeben

So erstellen Sie das virtuelle Gerät:

  • Öffnen Sie den Android Virtual Device Manager
  • Erstellen Sie ein neues Gerät
  • Geben Sie einen AVD-Namen ein
  • Setzen Sie das Ziel auf Google APIs (Google Inc.) – API Level 17
  • Speichern Sie Ihr virtuelles Gerät und starten Sie es …

Hinweis CPU / ABI wird als ARM behoben

Bildbeschreibung hier eingeben

Jetzt sollten Sie die Google Play-Dienste im Emulator verwenden können. Beachten Sie, dass Sie Ihr Ziel in Ihrem Android-Projekt entsprechend den Google-APIs festlegen müssen, damit die Google Play-Dienste funktionieren.

Ich habe die meisten Kombinationen aus dem Emulator ausprobiert, aber mit und ohne Google APIs, was bedeutet, dass ich sowohl mit dem x86- als auch dem arm-Modus getestet habe. Ich habe keine Möglichkeit gefunden, die Apk’s von meinem Galaxy Nexus Handy ziehen zu lassen, damit sie auf dem Emulator korrekt laufen.

Ich vermute, dass dies etwas damit zu tun hat, den Play Store zum Laufen zu bringen, ich habe mich auch dazu entschieden, das zu versuchen, um zu sehen, ob ich mehr Glück hatte. Hab ich nicht; Das könnte auch nicht funktionieren. Die Play Store-Symbole werden angezeigt und können gestartet werden. Sie werden jedoch sofort geschlossen.

Was jedoch funktioniert hat war das Herunterladen und Installieren der APKs am Ende der Seite hier:

http://umut.tekguc.info/de/content/google-android-map-v2-step-step

Nach der Installation der Vending- und Gms-Pakete erschien die Login-Schaltfläche in voller Schönheit unter dem Emulator. Da ich die eigentliche Login-functionalität noch nicht implementiert habe, kann ich mir nicht sicher sein, dass es tatsächlich funktioniert, aber zumindest sieht die Schaltfläche in meiner App auf meinem Gerät und im Emulator nun identisch aus.

Sie müssen auch die Google Play Services-Software herunterladen (im Android SDK-Manager unter “Extras” suchen) und die Bibliothek google-play-services_lib in Ihrem Projekt installieren (Datei-Android-Android-Code in Arbeitsumgebung importieren und dann Suchen Sie zum Beispiel nach / opt / adt-bundle-linux / sdk / extras / google / google_play_services / libproject und wählen Sie google-play-services_lib).

Ein weiterer interessanter Aspekt ist, dass dies nur auf den “reinen” Android Emulator Setups funktioniert, nicht auf den “Google API” Setups. Es scheint, dass die letzteren einige Teile dieser Anwendungen bereits im Emulator installiert haben (nicht sichtbar und nicht funktionierend), und es ist mir nicht gelungen, die vorhandenen Versionen zu entfernen, um die angepassten apk-Dateien zu installieren, die wie oben beschrieben funktionierten. Ich habe adb remove, adb install, adb install -r getestet und sogar die Verzeichnisse von / data entfernt, die ebenfalls fehlgeschlagen sind. Es sieht so aus, als würde Google versuchen, dies zu erschweren.

Ich bin enttäuscht, dass Google das so schwer macht; Google mag einige seltsame Gründe für die Lizenzierung haben, um diese Dinge aus dem Emulator herauszuhalten, aber wenn sie wirklich wollen, dass Leute ihre Dienste in ihren Android-Apps verwenden, müssen sie diese Dienste im Emulator verfügbar machen. Menschen zu zwingen, sich immer auf einem Gerät zu entwickeln (mit ansonsten exzellenten Emulatoren) oder Leute durch Hoops springen zu lassen (viel Googeln, inoffizielle / gehackte Versionen der Apks usw. installieren) ist einfach böse.

Letzte Aktualisierung vor dem Akzeptieren meiner Antwort; Obwohl die korrekte Schaltfläche mit dem richtigen Styling jetzt im Emulator angezeigt wird, kann der “Konto auswählen” -Dialog im Emulator immer noch nicht angezeigt werden. Wenn ich das tue, teile ich hier die richtige Lösung.

Überprüfen Sie die Ordner ldpi, mdpi, hdpi, etc … auf eine andere Schaltflächengrafik. Ihr Emulator ist mit ziemlicher Sicherheit ein anderes DPI als Ihr Gerät.

Android-Bild mit Google API implementiert Ich habe bemerkt, dass von API 21 gibt es ARM und x86 Bilder mit Google APIs vielleicht implementiert, wenn Sie kein Problem haben mit Android 5 zu emulieren funktioniert es ohne Extrahieren der APKs