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
Aby rozwiązać problemy z grą, możesz włączyć szczegółowe rejestrowanie na urządzeniu za pomocą polecenia adb shell
. Następnie możesz wyświetlić komunikaty logu Usług gier Google Play za pomocą logcat.
Włącz rejestrowanie
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 logowania
Aby wyłączyć szczegółowe rejestrowanie w Usługach Play Games na urządzeniu i przywrócić pierwotne działanie rejestrowania, 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ź te 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.xml
i 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.res/xml/strings.xml
lubres/xml/ids.xml
.Sprawdź, czy wartość zasobu
@string/app_id
jest zgodna z numerycznym identyfikatorem aplikacji. Wartość tego zasobu powinna zawierać tylko cyfry. Na przykład:<string name="app_id">123456789012</string>
Sprawdź nazwę pakietu
Nazwa pakietu gry musi być zgodna z nazwą pakietu w identyfikatorze klienta. Aby zweryfikować nazwę pakietu:
Otwórz
AndroidManifest.xml
i sprawdź, czy nazwa pakietu gry jest prawidłowa. Nazwa pakietu to wartość atrybutupackage
w 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 klientów. 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 ponownie się uwierzytelnić.
Sprawdzanie odcisku cyfrowego certyfikatu
Certyfikat, za pomocą którego uwierzytelniasz grę, powinien być zgodny z odciskiem certyfikatu powiązanym z 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 -v
Zwróć 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.apk
Wygeneruj klucz prywatny za pomocą 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
Zwróć 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 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 autoryzacja. 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 Registered apps (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 w przypadku nowych instalacji.
Anonimowi słuchacze
Nie używaj anonimowych odbiorców. Anonimowe odbiorniki to implementacje interfejsu odbiornika, 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...
}
}
Anonimowi słuchacze są niewiarygodni, 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łani. Zamiast tego zaimplementuj odbiornik 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...
}
}