Na tej stronie opisujemy, jak rozwiązywać problemy, które mogą wystąpić podczas tworzenia gier na Androida z usługami do gier Google Play.
Logowanie danych
Aby rozwiązać problemy z grą, możesz włączyć logowanie szczegółowe na urządzeniu za pomocą polecenia adb shell. Następnie możesz wyświetlić komunikaty logu usług Gier Google Play za pomocą narzędzia logcat.
Włączanie zapisywania logów
Aby włączyć logowanie na urządzeniu testowym:
Podłącz urządzenie do komputera, na którym jest zainstalowany pakiet Android SDK.
Otwórz terminal i uruchom to polecenie:
adb shell setprop log.tag.Games VERBOSE
Uruchom grę na urządzeniu i odtwórz problem, który chcesz debugować.
Wyświetl logi:
adb logcat
Wyłączanie zapisywania logów
Aby wyłączyć logowanie szczegółowe w usługach gier Play na urządzeniu i przywrócić pierwotny sposób zapisu logów, uruchom to polecenie:
adb shell setprop log.tag.Games INFO
Nie można uwierzytelnić
Jeśli nie możesz uwierzytelnić graczy w swojej grze, najpierw upewnij się, że postępujesz zgodnie z instrukcjami dotyczącymi tworzenia identyfikatorów klienta i konfigurowania usług gier. Jeśli nadal występują błędy uwierzytelniania, sprawdź wymienione poniżej elementy, aby upewnić się, że gra jest prawidłowo skonfigurowana.
Sprawdzanie tagów metadanych
Twój AndroidManifest.xml musi zawierać tag metadanych gier. Aby sprawdzić, czy tagi metadanych są prawidłowo skonfigurowane:
Otwórz
AndroidManifest.xmli sprawdź, czy zawiera tagmeta-data, jak pokazano poniżej:<meta-data android:name="com.google.android.gms.games.APP_ID" android:value="@string/app_id" />Znajdź definicję zasobu
@string/app_id. Zwykle jest on zdefiniowany w pliku XML znajdującym się w katalogures/xml, np. wres/xml/strings.xmllubres/xml/ids.xml.Sprawdź, czy wartość zasobu
@string/app_idjest zgodna z numerycznym 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ć zgodna z nazwą pakietu w identyfikatorze klienta. Aby zweryfikować nazwę pakietu:
Otwórz
AndroidManifest.xmli sprawdź, czy nazwa pakietu gry jest prawidłowa. Nazwa pakietu to wartość atrybutupackagew tagumanifest.Sprawdź nazwę pakietu podaną podczas tworzenia identyfikatora klienta. Aby sprawdzić nazwę pakietu w Konsoli Google Play, otwórz Konsolę Play i kliknij wpis odpowiadający Twojej grze.
Otwórz kartę Połączone aplikacje i sprawdź listę identyfikatorów klienta. Na tej liście powinna znajdować się połączona aplikacja na Androida, której nazwa pakietu jest zgodna z nazwą pakietu w pliku
AndroidManifest.xml. Jeśli wystąpi niezgodność, utwórz nowy identyfikator klienta z prawidłową nazwą pakietu i spróbuj uwierzytelnić się ponownie.
Sprawdzanie odcisku cyfrowego certyfikatu
Certyfikat, za pomocą którego uwierzytelniasz grę, powinien być zgodny z odciskiem certyfikatu powiązanym z Twoim identyfikatorem klienta. Aby to sprawdzić, najpierw sprawdź odcisk cyfrowy SHA1 certyfikatu w ten sposób:
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 -vZwróć uwagę na ciąg cyfr szesnastkowych oznaczony w danych wyjściowych symbolem
SHA1:. To jest odcisk cyfrowy certyfikatu.
Następnie sprawdź, czy narzędzie do kompilacji używa tego certyfikatu:
- Wygeneruj plik APK gry za pomocą narzędzia do kompilacji i podpisz go wybranym certyfikatem. Skopiuj wygenerowany pakiet APK do katalogu tymczasowego.
W katalogu tymczasowym uruchom to polecenie, aby rozpakować plik APK.
unzip YourGame.apkWygeneruj klucz prywatny za pomocą pliku certyfikatu RSA:
keytool -printcert -file META-INF/CERT.RSAMożesz też wygenerować klucz prywatny za pomocą pliku certyfikatu DSA:
keytool -printcert -file META-INF/CERT.DSAZwróć uwagę na ciąg cyfr szesnastkowych w wierszu oznaczonym symbolem
SHA1:.Ta sekwencja cyfr powinna być zgodna z odciskiem cyfrowym certyfikatu z poprzedniego kroku. Jeśli wystąpi niezgodność, narzędzie lub system kompilacji nie są skonfigurowane do podpisywania aplikacji za pomocą certyfikatu. W takim przypadku zapoznaj się z dokumentacją środowiska kompilacji, aby dowiedzieć się, jak je prawidłowo skonfigurować, i spróbuj ponownie się uwierzytelnić.
Następnie sprawdź, czy odcisk cyfrowy certyfikatu jest zgodny z odciskiem cyfrowym skonfigurowanym w Twoim identyfikatorze klienta. Aby to zrobić:
- Otwórz Konsolę Play i przejdź do swojej gry.
- Na stronie Szczegóły gry przewiń na dół i kliknij link do połączonego projektu Google Cloud Platform.
- Wybierz projekt.
- Na pasku bocznym po lewej stronie wybierz Interfejsy API i uwierzytelnianie. Sprawdź, czy na wyświetlonej liście interfejsów API stan interfejsu Google Play Game Services API to WŁĄCZONY.
- Na pasku bocznym po lewej stronie wybierz Zarejestrowane aplikacje.
- Rozwiń sekcję Identyfikator klienta OAuth 2.0 i zanotuj odcisk cyfrowy certyfikatu (SHA1).
Jeśli ten odcisk cyfrowy nie pasuje do odcisku cyfrowego certyfikatu z poprzednich kroków, musisz utworzyć nowy identyfikator klienta z prawidłowym odciskiem cyfrowym certyfikatu. Nowy identyfikator klienta musisz utworzyć w konsoli Play, a nie w projekcie Google Cloud Platform.
Sprawdzanie, czy konta testowe są włączone
Zanim gra zostanie opublikowana, konto, na którym została utworzona w Konsoli Play, musi być też włączone jako konto testera. Aby sprawdzić, czy jest poprawnie skonfigurowane:
- Otwórz Konsolę Play i przejdź do swojej gry.
- Otwórz kartę Testowanie.
- Sprawdź, czy konto, za pomocą którego próbujesz się uwierzytelnić, znajduje się na liście testerów.
Jeśli na liście nie ma konta, za pomocą którego próbujesz się uwierzytelnić, dodaj je do listy, poczekaj kilka minut i spróbuj ponownie.
Problemy z Proguardem
Jeśli używasz Proguarda i w zaciemnionym pliku APK pojawiają się błędy, sprawdź docelowy poziom interfejsu API w AndroidManifest.xml. Ustaw wartość 17 lub większą.
Inne przyczyny problemów z konfiguracją
Sprawdź inne typowe przyczyny błędów:
- Jeśli gra jest opublikowana, sprawdź, czy opublikowane są też jej ustawienia (możesz opublikować aplikację bez publikowania ustawień gry). Aby to zrobić, otwórz Konsolę Google Play, przejdź do aplikacji i sprawdź, czy pole obok nazwy gry wskazuje, że jest ona opublikowana. Jeśli wskazuje inny stan, np. „Gotowa do publikacji” lub „Gotowa do testowania”, kliknij pole i wybierz Opublikuj grę.
- Jeśli nie możesz opublikować gry, sprawdź, czy dokładnie 1 identyfikator klienta ma włączoną opcję Ta aplikacja jest preferowana przy nowych instalacjach.
Anonimowe detektory
Nie używaj anonimowych detektorów. Anonimowe detektory to implementacje interfejsu detektora, które są zdefiniowane w kodzie, jak pokazano poniżej.
ImageManager im = ...;
// Anonymous listener -- dangerous:
im.loadImage(new ImageManager.OnImageLoadedListener() {
@Override
public void onImageLoaded(Uri uri, Drawable drawable) {
// ...code...
}
}
Anonimowe detektory są niewiarygodne, ponieważ pakiet SDK Usług Google Play utrzymuje je jako słabe odwołania, co oznacza, że mogą zostać odzyskane przez moduł odśmiecania pamięci, zanim zostaną wywołane. Zamiast ich używać, zaimplementuj detektor za pomocą trwałego obiektu, 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...
}
}