Na tej stronie opisaliśmy sposoby rozwiązywania problemów, które mogą wystąpić podczas tworzenia gier na Androida za pomocą Usług Google Play Games.
Logowanie
Aby rozwiązywać problemy z grą, możesz włączyć szczegółowe logowanie na urządzeniu za pomocą polecenia adb shell
. Dzięki temu możesz wyświetlić komunikaty z dziennika usług gier Google Play za pomocą narzędzia logcat.
Włącz rejestrowanie
Aby włączyć rejestrowanie na urządzeniu testowym:
Podłącz urządzenie do komputera z zainstalowanym pakietem 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 próbujesz debugować.
Wyświetl logi:
adb logcat
Wyłączanie rejestrowania
Aby wyłączyć logowanie szczegółowe w usługach gier Play na urządzeniu i przywrócić pierwotne działanie logowania, uruchom to polecenie:
adb shell setprop log.tag.Games INFO
Nie można się zalogować
Jeśli nie możesz zalogować graczy w grze, najpierw sprawdź, czy postępujesz zgodnie z instrukcjami dotyczącymi tworzenia identyfikatorów klienta i konfigurowania usług gier. Jeśli nadal występują błędy logowania, sprawdź te kwestie, aby upewnić się, że gra jest prawidłowo skonfigurowana.
Sprawdzanie tagów metadanych
Plik 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
, na przykładres/xml/strings.xml
lubres/xml/ids.xml
.Sprawdź, czy wartość zasobu
@string/app_id
odpowiada numerycznemu identyfikatorowi 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 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 podawaną podczas tworzenia identyfikatora klienta. Aby zweryfikować 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 pasuje do nazwy pakietu na Twoim
AndroidManifest.xml
. Jeśli nie ma zgodności, 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 palca certyfikatu powiązanym z identyfikatorem klienta. Aby to sprawdzić, najpierw sprawdź odcisk cyfrowy SHA1 certyfikatu w ten sposób:
Znajdź plik certyfikatu i pobierz 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 sekwencję cyfr szesnastkowych o nazwie
SHA1:
w wyniku. To jest odcisk cyfrowy Twojego certyfikatu.
Następnie sprawdź, czy Twoje narzędzie do kompilacji używa tego certyfikatu:
- Wygeneruj plik APK gry z narzędzia do kompilacji i podpisz go odpowiednim certyfikatem. Skopiuj wygenerowany plik 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 na linii o nazwie
SHA1:
.Ta sekwencja cyfr powinna odpowiadać odciskowi palca certyfikatu z poprzedniego kroku. Jeśli wystąpi niezgodność, oznacza to, że 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 prawidłowo skonfigurować środowisko, i spróbuj się zalogować ponownie.
Następnie sprawdź, czy odcisk cyfrowy certyfikatu jest zgodny z odciskiem skonfigurowanym w identyfikatorze klienta. Aby to zrobić:
- Otwórz Konsolę Play i przejdź do swojej gry.
- Na stronie Szczegóły gry przewiń na sam 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 stan interfejsu API Usługi gier Google Play jest WŁĄCZONY na wyświetlonej liście interfejsów API.
- Na pasku bocznym po lewej stronie kliknij Zarejestrowane aplikacje.
- Rozwiń sekcję Identyfikator klienta OAuth 2.0 i zapisz odcisk palca certyfikatu (SHA1).
Jeśli ten odcisk palca nie pasuje do odcisku palca certyfikatu z poprzednich kroków, musisz utworzyć nowy identyfikator klienta z odpowiednim odciskiem palca certyfikatu. Nowy identyfikator klienta musisz utworzyć w konsoli Google Play, a nie w projekcie Google Cloud Platform.
Sprawdź, czy konta testowe są włączone
Zanim gra zostanie opublikowana, konto, na którym została utworzona w Konsoli Play, musi też zostać włączone jako konto testowe. Aby sprawdzić, czy kod jest poprawnie skonfigurowany:
- Otwórz Konsolę Play i otwórz stronę swojej gry.
- Otwórz kartę Testowanie.
- Sprawdź, czy konto, na które próbujesz się zalogować, znajduje się na liście testerów.
Jeśli konta, na które próbujesz się zalogować, nie ma na liście, dodaj je do listy, odczekaj kilka minut i spróbuj się zalogować ponownie.
Problemy z Proguardem
Jeśli używasz Proguarda i widzisz błędy w zaszyfrowanym pliku APK, sprawdź docelowy poziom interfejsu API w AndroidManifest.xml
. Pamiętaj, by ustawić go na 17 lub więcej.
Inne przyczyny problemów z konfiguracją
Sprawdź inne typowe przyczyny błędów:
- Jeśli gra została opublikowana, sprawdź, czy ustawienia gry również zostały opublikowane (możliwe jest opublikowanie aplikacji bez opublikowania ustawień gry). Aby to zrobić, otwórz Konsolę Google Play, przejdź do aplikacji i sprawdź, czy obok jej nazwy jest zaznaczone pole wskazujące, że została opublikowana. Jeśli wskazuje, że jest w innym stanie, 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 słuchaczy. Anonimowe odbiorniki to implementacje interfejsu odbiornika zdefiniowane w miejscu, 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ą niepewni, ponieważ pakiet SDK Gry Play obsługuje je jako słabe odwołania, co oznacza, że mogą zostać odzyskane przez zbieracza pamięci podręcznej, zanim zostaną wywołane. Zamiast tego należy zaimplementować listenera za pomocą obiektu stał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...
}
}