Rozwiązywanie problemów z usługami gier Play w grach na Androida

Na tej stronie opisujemy sposoby rozwiązywania problemów, które mogą wystąpić podczas tworzenia gier na Androida przy użyciu usług gier Google Play;

Logowanie

Aby rozwiązać problemy z grą, możesz włączyć szczegółowe zapisywanie w dzienniku na urządzeniu za pomocą polecenia adb shell. Możesz wtedy wyświetlić Usługi gier Google Play rejestrują komunikaty za pomocą narzędzia logcat.

Włącz rejestrowanie

Aby włączyć logowanie na urządzeniu testowym:

  1. Połącz urządzenie z komputerem z zainstalowanym pakietem Android SDK.

  2. Otwórz terminal i uruchom to polecenie:

    adb shell setprop log.tag.Games VERBOSE
  3. Uruchom grę na urządzeniu i odtwórz problem, który próbujesz rozwiązać. debugowanie.

  4. Wyświetl logi:

    adb logcat

Wyłącz logowanie

Aby wyłączyć logowanie szczegółowe w usługach gier Play na urządzeniu oraz przywróć pierwotne zachowanie logowania, uruchom to polecenie:

adb shell setprop log.tag.Games INFO

Nie można się zalogować

Jeśli nie możesz zalogować graczy do gry, najpierw upewnij się, postępuje zgodnie z instrukcjami, utworzyć identyfikatory klientów oraz skonfigurować usługi gier. Jeśli nadal występują błędy logowania, sprawdź poniższe kwestie, by upewnić się, czy gra jest poprawnie skonfigurowana.

Sprawdź tagi metadanych

AndroidManifest.xml musi zawierać tag metadanych gier. Aby to sprawdzić Sprawdź, czy tagi metadanych są skonfigurowane prawidłowo.

  1. Otwórz AndroidManifest.xml i sprawdź, czy zawiera tag meta-data, jak pokazano poniżej:

    <meta-data android:name="com.google.android.gms.games.APP_ID"
        android:value="@string/app_id" />
    
  2. Znajdź definicję zasobu @string/app_id. Jest ono zazwyczaj zdefiniowane w pliku XML. znajduje się w katalogu res/xml, na przykład res/xml/strings.xml lub res/xml/ids.xml.

  3. Sprawdź, czy wartość zasobu @string/app_id jest zgodna z liczbowym identyfikatorem aplikacji. Wartość tego zasobu powinna zawierać tylko cyfry. Na przykład:

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

Sprawdzanie nazwy pakietu

Nazwa pakietu gry musi być taka sama jak nazwa pakietu w identyfikatorze klienta. Aby sprawdzić nazwę pakietu:

  1. Otwórz AndroidManifest.xml i sprawdź, czy nazwa pakietu gry jest poprawna. Przesyłka nazwa to wartość atrybutu package w tagu manifest.

  2. Sprawdź nazwę pakietu podaną przy tworzeniu identyfikatora klienta. Aby zweryfikować nazwę pakietu w Konsoli Google Play, otwórz w Konsoli Play i kliknij wpis odpowiadający Twojej grze.

  3. Otwórz kartę Połączone aplikacje i sprawdź listę identyfikatorów klientów. OK powinna być na tej liście powiązana z aplikacją na Androida, której nazwa pakietu odpowiada nazwa pakietu na stronie AndroidManifest.xml. Jeśli okaże się, że dane nie są zgodne, utwórz nowe z prawidłową nazwą pakietu i spróbuj zalogować się ponownie.

Sprawdź odcisk cyfrowy certyfikatu

Certyfikat, którym podpisujesz grę, powinien być zgodny z certyfikatem odcisk cyfrowy certyfikatu powiązany z identyfikatorem klienta. Aby to sprawdzić, najpierw sprawdź odcisk cyfrowy SHA1 swojego certyfikatu w ten sposób:

  1. Znajdź plik certyfikatu i uzyskaj jego odcisk cyfrowy SHA1. Aby uzyskać Odcisk cyfrowy SHA1, uruchom to polecenie:

    keytool -exportcert -alias your-key-name -keystore /path/to/your/keystore/file -list -v
    
  2. Zwróć uwagę na sekwencję cyfr szesnastkowych oznaczonych etykietą SHA1: w dane wyjściowe. To odcisk cyfrowy Twojego certyfikatu.

.

Następnie sprawdź, czy Twoje narzędzie do kompilacji używa tego certyfikatu:

  1. Wygeneruj plik APK gry z narzędzia do kompilacji i podpisz go wybranym certyfikat. Skopiuj wygenerowany plik APK do katalogu tymczasowego.
  2. W katalogu tymczasowym uruchom następujące polecenie, aby rozpakować plik APK.

    unzip YourGame.apk
    
  3. Wygeneruj klucz prywatny przy użyciu pliku certyfikatu RSA:

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

    Klucz prywatny możesz też wygenerować za pomocą pliku certyfikatu DSA:

    keytool -printcert -file META-INF/CERT.DSA
    
  4. Zwróć uwagę na sekwencję cyfr szesnastkowych w wierszu z etykietą SHA1:.

    Ta sekwencja cyfr powinna pasować do odcisku cyfrowego certyfikatu z poprzedniego kroku. Jeśli wystąpi niezgodność, narzędzie do tworzenia kompilacji lub system skonfigurowany do podpisywania aplikacji certyfikatem. W tym przypadku zapoznaj się z dokumentacją środowiska kompilacji, aby określić, jak go skonfigurować to i spróbuj zalogować się jeszcze raz.

Następnie sprawdź, czy odcisk cyfrowy certyfikatu pasuje do skonfigurowanego odcisku cyfrowego w identyfikatorze klienta. Aby to zrobić:

  1. Otwórz Konsolę Play i przejdź do swojej gry.
  2. Na stronie Szczegóły gry przewiń w dół i kliknij link. połączonego projektu Google Cloud Platform.
  3. Wybierz projekt.
  4. Na pasku bocznym po lewej stronie wybierz Interfejsy API auth Upewnij się, że Na wyświetlanej liście interfejsów API usług Google Play Games Services stan interfejsu API usług gier Google Play to WŁĄCZONE.
  5. Na pasku bocznym po lewej stronie kliknij Zarejestrowane aplikacje.
  6. Rozwiń sekcję Identyfikator klienta OAuth 2.0 i zanotuj certyfikat odcisk palca (SHA1).

Jeśli odcisk cyfrowy nie jest zgodny z odciskiem cyfrowym certyfikatu z poprzednich kroków, musisz utworzyć nowy identyfikator klienta z prawidłowym certyfikatem odcisk palca. Musisz utworzyć nowy identyfikator klienta w w Konsoli Play, a nie w projekcie Google Cloud Platform.

Sprawdź, czy konta testowe są włączone

Przed opublikowaniem gry konto, na którym powstała gra w Konsola Play też musi być włączona jako tester. Aby to sprawdzić Jest poprawnie skonfigurowany:

  1. Otwórz Konsolę Play i przejdź do swojej gry.
  2. Otwórz kartę Testowanie.
  3. Sprawdź, czy konto, na które próbujesz się zalogować, znajduje się na liście dla testerów.

Jeśli konta, za pomocą którego próbujesz się zalogować, nie ma na liście, dodaj je do listy i zaczekaj kilka minut. i ponownie spróbuj się zalogować.

Problemy z ProGuard

Jeśli korzystasz z Proguard i w zaciemnionym pakiecie APK widzisz błędy, sprawdź docelowy poziom interfejsu API na urządzeniu AndroidManifest.xml. Pamiętaj, by ustawić go na 17 lub więcej.

Inne przyczyny problemów z konfiguracją

Sprawdź, czy nie występują inne częste przyczyny błędów:

  • Jeśli gra została opublikowana, sprawdź, czy są też opublikowane jej ustawienia (możesz też opublikować aplikację bez publikowania ustawień gier). W tym celu otwórz Otwórz Konsolę Google Play i przejdź do aplikacji, a następnie zaznacz, że pole obok jej nazwy wskazuje opublikowania. Jeśli wskazuje, że jest w innym stanie, takim jak „Gotowy do publikacji”. lub „Ready to Test” (Gotowa do testowania), kliknij pole, a następnie Opublikuj grę.
  • Jeśli nie możesz opublikować gry, sprawdź, czy tylko jeden z identyfikatorów klienta ma pole Ta aplikacja jest preferowane w przypadku nowych instalacji.

Anonimowi słuchacze

Nie używaj anonimowych detektorów. Anonimowi detektory to implementacje interfejsu detektora zdefiniowanych w tekście, jak widać na ilustracji poniżej.

    ImageManager im = ...;

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

Anonimowi detektory są zawodne, ponieważ pakiet SDK Gier Play przechowuje je jako słabe odniesienia. co oznacza, że mogą zostać odzyskane przez śmieci, zanim zostaną . Zamiast tego warto wdrożyć detektor za pomocą obiektu trwałego takich jak Activity

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