Rozwiązywanie problemów z grą na Androida

Na tej stronie opisujemy sposoby rozwiązywania problemów, które mogą wystąpić podczas programowania na Androida z pakietem SDK Gier Play.

Nie można się zalogować

Jeśli nie możesz zalogować graczy do gry, najpierw upewnij się, że postępujesz zgodnie z instrukcje tworzenia identyfikatorów klientów oraz skonfigurować usługi gier. Jeśli nadal występuje logowanie sprawdź te elementy, aby upewnić się, że gra jest prawidłowo 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 potwierdzić nazwę pakietu w Konsolę Google Play, otwórz Konsolę Google Play i kliknij wpis odpowiadający Twojej grze. Otwórz kartę Połączone aplikacje i sprawdź listę identyfikatorów klientów. Powinno być połączone konto Android aplikacja na tej liście, której nazwa pakietu odpowiada nazwie pakietu w AndroidManifest.xml.
  3. Jeśli coś się nie zgadza, utwórz nowy identyfikator klienta z prawidłową nazwą pakietu i spróbuj się zalogować. ponownie.

Sprawdź odcisk cyfrowy certyfikatu

Certyfikat, którym podpisujesz grę, powinien być zgodny z odciskiem cyfrowym certyfikatu powiązane z Twoim identyfikatorem klienta. Aby to sprawdzić, najpierw sprawdź odcisk cyfrowy SHA1 certyfikatu:

  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ę Google 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. W Google Cloud Platform wybierz swój 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. Nowy identyfikator klienta musisz utworzyć w Konsoli Google Play, nie w przeglądarce. w Google Cloud Platform.

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

Przed opublikowaniem gry w Konsoli Google Play musisz też mieć konto, na którym została utworzona włączony jako tester. Aby sprawdzić, czy kod jest poprawnie skonfigurowany:

  1. Otwórz Konsolę Google Play i przejdź do swojej gry.
  2. Otwórz kartę Testowanie.
  3. Sprawdź, czy konto, na które próbujesz się zalogować, jest na liście 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). Aby to zrobić, 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...
        }
    }