Rozwiązywanie problemów z grą na Androida

Na tej stronie opisaliśmy sposoby rozwiązywania problemów, które mogą wystąpić podczas tworzenia gier na Androida za pomocą pakietu Play Games SDK.

Nie można się zalogować

Jeśli nie możesz zalogować graczy, najpierw upewnij się, że postępujesz zgodnie z instrukcjami tworzenia identyfikatorów klientów i konfigurowania usług gier. Jeśli nadal występują błędy logowania, sprawdź te elementy, aby mieć pewność, że gra jest prawidłowo skonfigurowana.

Sprawdzanie tagów metadanych

AndroidManifest.xml musi zawierać tag metadanych gier. Aby sprawdzić, czy tagi metadanych są poprawnie skonfigurowane:

  1. Otwórz stronę 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 ona zwykle zdefiniowana w pliku XML znajdującym 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. Przykład:

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

Sprawdź nazwę pakietu

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

  1. Otwórz pakiet AndroidManifest.xml i sprawdź, czy nazwa pakietu gry jest prawidłowa. Nazwa pakietu to wartość atrybutu package w tagu manifest.
  2. Sprawdź nazwę pakietu podana podczas tworzenia identyfikatora klienta. Aby sprawdzić nazwę pakietu w Konsoli Google Play, przejdź do Konsoli Google Play i kliknij wpis odpowiadający Twojej grze. Otwórz kartę Połączone aplikacje i sprawdź listę identyfikatorów klienta. Na liście powinna być połączona aplikacja na Androida, której nazwa pakietu odpowiada nazwie pakietu na urządzeniu AndroidManifest.xml.
  3. W przypadku niezgodności utwórz nowy identyfikator klienta z prawidłową nazwą pakietu i spróbuj zalogować się ponownie.

Sprawdź odcisk cyfrowy certyfikatu

Certyfikat, przy użyciu którego podpisujesz grę, powinien być zgodny z odciskiem cyfrowym certyfikatu powiązanym z Twoim identyfikatorem klienta. Aby to sprawdzić, najpierw sprawdź odcisk cyfrowy SHA1 swojego 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ę wartości szesnastkowych oznaczonych etykietą SHA1: w danych wyjściowych. To Twój odcisk cyfrowy certyfikatu.

Następnie sprawdź, czy to narzędzie korzysta z tego certyfikatu:

  1. Wygeneruj plik APK gry z narzędzia do tworzenia aplikacji i podpisz go odpowiednim certyfikatem. Skopiuj wygenerowany plik APK do katalogu tymczasowego.
  2. W tymczasowym katalogu uruchom podane niżej 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
    

    Możesz też wygenerować klucz prywatny za pomocą pliku certyfikatu DSA:

    keytool -printcert -file META-INF/CERT.DSA
    
  4. Zwróć uwagę na sekwencję wartości szesnastkowych w wierszu SHA1:.

    Ta sekwencja cyfr powinna pasować do odcisku cyfrowego z poprzedniego kroku. Jeśli wystąpi niezgodność, narzędzie lub system kompilacji nie jest skonfigurowane do podpisywania aplikacji za pomocą certyfikatu. W takim przypadku zapoznaj się z dokumentacją środowiska kompilacji, aby określić, jak prawidłowo ją skonfigurować, i ponownie zalogować się.

Następnie sprawdź, czy odcisk cyfrowy certyfikatu jest zgodny z odciskiem cyfrowym skonfigurowanym w identyfikatorze klienta. Aby to zrobić:

  1. Otwórz Konsolę Google Play i przejdź do gry.
  2. Na stronie Szczegóły gry przewiń w dół i kliknij link do połączonego projektu Google Cloud Platform.
  3. Wybierz projekt w Google Cloud Platform.
  4. Na pasku bocznym po lewej stronie wybierz APIs & amp; auth (Interfejsy API i uwierzytelnianie). Upewnij się, że stan interfejsu API usług gier Google Play to WŁ. na wyświetlonej liście.
  5. Na pasku bocznym po lewej wybierz Zarejestrowane aplikacje.
  6. Rozwiń sekcję identyfikatora klienta OAuth 2.0 i zapisz odcisk cyfrowy certyfikatu (SHA1).

Jeśli odcisk cyfrowy nie jest zgodny z odciskiem cyfrowym certyfikatu z poprzednich kroków, musisz utworzyć nowy identyfikator klienta z odpowiednim odciskiem cyfrowym. Nowy identyfikator klienta musisz utworzyć w Konsoli Google Play, a nie w Google Cloud Platform.

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

Zanim opublikujesz grę, jako testera musisz włączyć konto, na którym została utworzona gra w Konsoli Google Play. Aby sprawdzić, czy konfiguracja jest prawidłowa:

  1. Otwórz Konsolę Google Play i przejdź do gry.
  2. Otwórz kartę Testowanie.
  3. Sprawdź, czy konto, na które próbujesz się zalogować, znajduje się 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 poczekaj kilka minut, a potem spróbuj się ponownie zalogować.

Problemy z ochroną

Jeśli używasz ProGuard i widzisz błędy w zaciemnionym pliku APK, sprawdź docelowy poziom interfejsu API na urządzeniu AndroidManifest.xml. Pamiętaj, aby ustawić go na co najmniej 17.

Inne przyczyny problemów z konfiguracją

Sprawdź, czy nie wystąpiły inne typowe przyczyny błędów:

  • Jeśli Twoja gra została już opublikowana, sprawdź też, czy ustawienia gry zostały opublikowane (ta aplikacja jest dostępna do opublikowania w niej). Aby to zrobić, otwórz Konsolę Google Play i przejdź do aplikacji, a potem sprawdź, czy pole obok nazwy gry wskazuje, że została opublikowana. Jeśli wskazuje, że jest w innym stanie, na przykład „Gotowe do publikacji” lub „Gotowy do testowania”, kliknij pole i wybierz Opublikuj grę.
  • Jeśli nie możesz opublikować gry, upewnij się, że jeden z identyfikatorów klienta ma włączoną opcję Preferowana dla nowych instalacji.

Anonimowy słuchacze

Nie używaj anonimowych słuchaczy. Anonimowi słuchacze to implementacje interfejsu odbiornika zdefiniowane w tekście, jak pokazano poniżej.

    ImageManager im = ...;

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

Anonimowi użytkownicy nie są pewni, ponieważ pakiet SDK Gier Play utrzymuje je jako słabe punkty referencyjne, co oznacza, że mogą one zostać odzyskane przez element usuwający śmieci, zanim zostaną one wywołane. Zamiast tego musisz wdrożyć odbiornik za pomocą obiektu trwałego, takiego 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...
        }
    }