it-swarm.com.de

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

Bei der Integration einer Google Plus-Anmeldeschaltfläche in eine Android-App stelle ich einige Unterschiede fest, wie die Schaltfläche auf einem tatsächlichen Gerät und im Emulator angezeigt wird. Mir ist bekannt, dass die APKs für Google Plus-Dienste nicht im Emulator installiert sind. Dies kann jedoch umgangen werden, indem die APKs von einem Gerät abgerufen und mithilfe von APK im Emulator installiert werden.

Meine aktuelle "Implementierung" enthält einfach den Login-Button in einem Layout, indem auf den Button mit dem folgenden XML-Code verwiesen wird:

<com.google.Android.gms.common.SignInButton
    Android:id="@+id/sign_in_button"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content" />

Wenn ich meine App auf dem Gerät teste, wird die Schaltfläche gemäß den hier genannten Richtlinien rot und glänzend dargestellt https://developers.google.com/+/mobile/Android/sign-in . Wenn Sie jedoch den Emulator ausführen, ist dies nur ein normaler Button (grauer Hintergrund mit schwarzem Text), der "Anmelden bei Google" sagt.

Irgendeine Idee, warum die Ergebnisse unterschiedlich sind? Ich habe sichergestellt, dass ich die gleiche API-Ebene ausführte, und die Ressource scheint auch auf dem Emulator korrekt abgerufen zu werden, da sie die tatsächliche Anmeldeschaltfläche anzeigt (jedoch mit einem anderen Aussehen).

Aktualisieren: In logcat einen Hinweis gefunden; die Meldung "Anmeldeschaltfläche nicht gefunden, stattdessen Platzhalter verwendet". erklärt ziemlich genau, warum ich die graue stumpfe Taste auf dem Emulator sehe. Muss immer noch herausfinden, warum; könnte der "google plus apk vom Gerät kopieren" hack nicht richtig funktionieren.

15
Marius Kjeldahl

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

Update

Sie können jetzt Intel/x86-Images (HAXM-kompatibel) für API 19 und höher verwenden. Für ARM sind Google Play Services auf den meisten Images verfügbar.

Bild einrichten

So erhalten Sie das richtige Image für Ihren virtuellen Geräte-Manager:

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

enter image description here

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 ...

Note _ ​​CPU/ABI wird als ARM festgelegt)

enter image description here

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

53
class

Ich habe die meisten Kombinationen des Emulators ausprobiert, jedoch mit und ohne Google APIs, was bedeutet, dass ich sowohl mit dem x86- als auch mit dem Arm-Modus getestet habe. Ich habe keine Möglichkeit gefunden, die apk aus meinem Galaxy Nexus-Telefon herauszuziehen, damit sie korrekt auf dem Emulator laufen.

Ich schätze, dass dies etwas damit zu tun hat, dass der Play Store zum Laufen gebracht wird. Ich entschied mich, das auch zu versuchen, um zu sehen, ob ich mehr Glück hatte. Ich hab nicht; konnte das auch nicht zum Laufen bringen. Die Play Store-Symbole werden angezeigt und können gestartet werden, werden jedoch sofort geschlossen.

Was funktioniert hat, war das Herunterladen und Installieren der apks unten auf der Seite hier:

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

Nach der Installation der Pakete vending und gms erschien der Login-Button in seiner vollen Schönheit unter dem Emulator. Da ich die eigentliche Anmeldefunktionalität noch nicht implementiert habe, kann ich nicht sicher sein, dass sie tatsächlich funktioniert, aber zumindest sieht die Schaltfläche in meiner App auf meinem Gerät und im Emulator jetzt identisch aus.

Sie müssen auch die Google Play Services-Software herunterladen (siehe "Extras" im Android SDK-Manager) und die Bibliothek google-play-services_lib in Ihrem Projekt installieren (File-Import-Android-Vorhandener Android-Code in den Arbeitsbereich und dann Navigieren Sie zu/opt/adt-bundle-linux/sdk/extras/google/google_play_services/libproject und wählen Sie google-play-services_lib aus.

Ein weiterer interessanter Leckerbissen ist, dass dies nur mit den "reinen" Android-Emulator-Setups funktioniert, nicht mit den "Google API" -Einstellungen. Letztere haben anscheinend bereits einige Teile dieser Apps im Emulator installiert (nicht sichtbar und funktionieren nicht), und es ist mir nicht gelungen, die vorhandenen Versionen zu entfernen, um die benutzerdefinierten apk-Dateien zu installieren, die wie oben beschrieben funktionieren. Ich habe ADB Remove, ADB Install, ADB Install -r getestet und sogar die Verzeichnisse aus/data entfernt, die ebenfalls fehlgeschlagen sind. Es sieht so aus, als ob Google versucht, dies zu erschweren.

Ich bin enttäuscht, dass Google dies so schwer macht. Google hat möglicherweise einige seltsame Lizenzierungsgründe, um dieses Material aus dem Emulator herauszuhalten, aber wenn die Benutzer wirklich möchten, dass ihre Dienste in ihren Android-Apps verwendet werden, müssen sie diese Dienste im Emulator verfügbar machen. Menschen dazu zu zwingen, sich ständig auf einem Gerät zu entwickeln (mit ansonsten hervorragenden Emulatoren) oder die Leute durch Reifen springen zu lassen (viel googeln, inoffizielle/gehackte Versionen der Apks installieren usw.), ist einfach böse.

Letztes Update bevor ich meine Antwort akzeptiere; Obwohl im Emulator jetzt die richtige Schaltfläche mit dem richtigen Stil angezeigt wird, kann ich den Dialog "Konto auswählen" immer noch nicht im Emulator anzeigen. Wann und wenn ich dies tue, werde ich hier die richtige Lösung mitteilen.

4
Marius Kjeldahl

Android image with google API implemented Ich habe festgestellt, dass ab API 21 ARM und x86-Images mit Google-APIs implementiert sind Wenn Sie kein Problem mit der Emulation von Android 5 haben, können Sie die APKs nicht extrahieren

0
Fuseteam

Überprüfen Sie die Ordner ldpi, mdpi, hdpi usw. auf eine andere Schaltflächengrafik. Ihr Emulator hat mit Sicherheit eine andere DPI als Ihr Gerät.

0
Bill Mote