Fehlerbehebung bei Problemen mit Ihrem Android-Spiel

Auf dieser Seite wird beschrieben, wie Sie Probleme bei der Entwicklung von Android-Spielen mit dem Play Spiele SDK beheben können.

Anmeldung nicht möglich

Wenn Sie keine Spieler in Ihrem Spiel anmelden können, prüfen Sie zuerst, ob Sie die Anleitung zum Erstellen Ihrer Client-IDs und zum Konfigurieren der Spieldienste befolgt haben. Wenn weiterhin Anmeldefehler auftreten, prüfen Sie die folgenden Punkte, um sicherzugehen, dass Ihr Spiel richtig eingerichtet ist.

Metadaten-Tags überprüfen

Dein AndroidManifest.xml muss ein Spiele-Metadaten-Tag enthalten. So prüfst du, ob deine Metadaten-Tags korrekt eingerichtet sind:

  1. Öffnen Sie AndroidManifest.xml und prüfen Sie, ob es ein meta-data-Tag enthält:

    <meta-data android:name="com.google.android.gms.games.APP_ID"
        android:value="@string/app_id" />
    
  2. Suchen Sie die Definition Ihrer @string/app_id-Ressource. Sie ist in der Regel in einer XML-Datei im Verzeichnis res/xml definiert, z. B. res/xml/strings.xml oder res/xml/ids.xml.

  3. Prüfen Sie, ob der Wert der Ressource @string/app_id mit der numerischen ID Ihrer Anwendung übereinstimmt. Der Wert dieser Ressource darf nur Ziffern enthalten. Beispiel:

    <string name="app_id">123456789012</string>
    

Paketname prüfen

Der Paketname Ihres Spiels muss mit dem Paketnamen in Ihrer Client-ID übereinstimmen. So prüfen Sie den Paketnamen:

  1. Öffne AndroidManifest.xml und überprüfe, ob der Paketname deines Spiels korrekt ist. Der Paketname ist der Wert des Attributs package im Tag manifest.
  2. Überprüfen Sie den Paketnamen, den Sie beim Erstellen Ihrer Client-ID angegeben haben. Wenn Sie den Paketnamen in der Google Play Console prüfen möchten, rufen Sie die Google Play Console auf und klicken Sie auf den Eintrag für Ihr Spiel. Rufen Sie den Tab Verknüpfte Apps auf und sehen Sie sich die Liste der Client-IDs an. Diese Liste sollte eine mit Android verknüpfte App enthalten, deren Paketname mit dem Paketnamen in Ihrer AndroidManifest.xml übereinstimmt.
  3. Wenn es eine Abweichung gibt, erstellen Sie eine neue Client-ID mit dem richtigen Paketnamen und versuchen Sie noch einmal, sich anzumelden.

Fingerabdruck des Zertifikats prüfen

Das Zertifikat, mit dem Sie das Spiel signieren, muss mit dem Zertifikatfingerabdruck übereinstimmen, der mit Ihrer Client-ID verknüpft ist. Prüfen Sie dazu zuerst den SHA1-Fingerabdruck Ihres Zertifikats:

  1. Suchen Sie die Zertifikatsdatei und rufen Sie den SHA1-Fingerabdruck ab. Führen Sie diesen Befehl aus, um den SHA1-Fingerabdruck abzurufen:

    keytool -exportcert -alias your-key-name -keystore /path/to/your/keystore/file -list -v
    
  2. Notieren Sie sich die Sequenz der Hexadezimalziffern mit der Bezeichnung SHA1: in der Ausgabe. Das ist der Fingerabdruck Ihres Zertifikats.

Prüfen Sie als Nächstes, ob Ihr Build-Tool dieses Zertifikat verwendet:

  1. Generieren Sie die APK-Datei Ihres Spiels aus Ihrem Build-Tool und signieren Sie sie mit dem gewünschten Zertifikat. Kopieren Sie das generierte APK in ein temporäres Verzeichnis.
  2. Führen Sie im temporären Verzeichnis den folgenden Befehl aus, um Ihr APK zu entpacken.

    unzip YourGame.apk
    
  3. Generieren Sie einen privaten Schlüssel mit einer RSA-Zertifikatsdatei:

    keytool -printcert -file META-INF/CERT.RSA
    

    Alternativ können Sie den privaten Schlüssel mit einer DSA-Zertifikatsdatei generieren:

    keytool -printcert -file META-INF/CERT.DSA
    
  4. Achten Sie auf die Folge von Hexadezimalziffern in der Zeile SHA1:.

    Diese Ziffernfolge sollte mit dem Zertifikatfingerabdruck aus dem vorherigen Schritt übereinstimmen. Wenn es eine Abweichung gibt, ist Ihr Build-Tool oder -System nicht für das Signieren Ihrer Anwendung mit Ihrem Zertifikat konfiguriert. Prüfen Sie in diesem Fall die Dokumentation Ihrer Build-Umgebung, wie Sie sie richtig konfigurieren, und versuchen Sie die Anmeldung noch einmal.

Prüfen Sie als Nächstes, ob der Zertifikatfingerabdruck mit dem Fingerabdruck übereinstimmt, der in Ihrer Client-ID konfiguriert ist. Das geht so:

  1. Öffnen Sie die Google Play Console und rufen Sie das Spiel auf.
  2. Scrollen Sie auf der Seite Infos zum Spiel nach unten und klicken Sie auf den Link zum verknüpften Google Cloud Platform-Projekt.
  3. Wählen Sie in der Google Cloud Platform Ihr Projekt aus.
  4. Wählen Sie links APIs und Authentifizierung aus. Achten Sie darauf, dass der API-Status der Google Play-Spieldienste in der angezeigten Liste der APIs EIN ist.
  5. Wählen Sie links Registrierte Apps aus.
  6. Maximieren Sie den Bereich mit der OAuth 2.0-Client-ID und notieren Sie sich den Fingerabdruck des Zertifikats (SHA1).

Wenn dieser Fingerabdruck nicht mit dem Fingerabdruck Ihres Zertifikats aus den vorherigen Schritten übereinstimmt, müssen Sie eine neue Client-ID mit dem richtigen Zertifikatfingerabdruck erstellen. Sie müssen die neue Client-ID in der Google Play Console erstellen, nicht in der Google Cloud Platform.

Prüfen, ob Testkonten aktiviert sind

Vor der Veröffentlichung eines Spiels muss das Konto, mit dem das Spiel in der Google Play Console erstellt wurde, auch als Tester aktiviert sein. So prüfen Sie, ob dies richtig konfiguriert ist:

  1. Öffnen Sie die Google Play Console und rufen Sie das Spiel auf.
  2. Öffnen Sie den Tab Test.
  3. Prüfen Sie, ob sich das Konto, mit dem Sie sich anmelden möchten, in der Liste der Tester befindet.

Wenn das Konto, mit dem du dich anmelden möchtest, nicht aufgeführt ist, füge es der Liste hinzu. Warte einige Minuten und versuche dann noch einmal, dich anzumelden.

Probleme mit ProGuard

Wenn du ProGuard verwendest und im verschleierten APK Fehler angezeigt werden, überprüfe die Ziel-API-Ebene auf deinem AndroidManifest.xml. Sie muss auf 17 oder höher eingestellt sein.

Andere Ursachen von Problemen bei der Einrichtung

Suchen Sie nach anderen häufigen Fehlerquellen:

  • Wenn Ihr Spiel veröffentlicht wird, prüfen Sie, ob auch die Spieleinstellungen veröffentlicht sind. Es ist möglich, die App ohne die Spieleinstellungen zu veröffentlichen. Rufen Sie dazu die Google Play Console auf und prüfen Sie, ob das Kästchen neben dem Namen des Spiels bereits veröffentlicht ist. Wenn ein anderer Status angegeben ist, z. B. „Bereit zur Veröffentlichung“ oder „Bereit zum Testen“, klicken Sie das Kästchen an und wählen Sie Spiel veröffentlichen aus.
  • Wenn du dein Spiel nicht veröffentlichen kannst, prüfe, ob für eine der Client-IDs die Option Diese App wird für Neuinstallationen bevorzugt aktiviert ist.

Anonyme Zuhörer

Verwenden Sie keine anonymen Listener. Anonyme Listener sind Implementierungen einer Listener-Schnittstelle, die inline definiert werden, wie unten dargestellt.

    ImageManager im = ...;

    // Anonymous listener -- dangerous:
    im.loadImage(new ImageManager.OnImageLoadedListener() {
        @Override
        public void onImageLoaded(Uri uri, Drawable drawable) {
            // ...code...
        }
    }

Anonyme Listener sind nicht zuverlässig, da sie vom Play Spiele SDK als schwache Referenzen geführt werden. Das bedeutet, dass sie möglicherweise durch den Garbage Collector zurückgefordert werden, bevor sie aufgerufen werden. Stattdessen sollten Sie den Listener mit einem nichtflüchtigen Objekt wie dem Activity implementieren.

    public class MyActivity extends Activity
            implements ImageManager.OnImageLoadedListener {

        private void loadOurImages() {
            ImageManager im = ...;
            im.loadImage(this);
        }

        @Override
        public void onImageLoaded(Uri uri, Drawable drawable) {
            // ...code...
        }
    }