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ą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 logowania Usług Google Play Games za pomocą 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 chcesz debugować.
Wyświetlanie logów:
adb logcat
Wyłączanie rejestrowania
Aby wyłączyć szczegółowe rejestrowanie w Usługach Google Play na urządzeniu i wrócić do pierwotnego zachowania rejestrowania, 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>
Sprawdź nazwę 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 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 liście powinna znajdować się połączona aplikacja na Androida, której nazwa pakietu jest taka sama jak nazwa pakietu w 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.
Sprawdzanie odcisku cyfrowego 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 narzędzie do kompilacji używa tego certyfikatu:
- Wygeneruj plik APK gry za pomocą narzędzia do tworzenia 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ępuje niezgodność, narzędzie do kompilacji lub system nie jest skonfigurowany 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 certyfikatu jest zgodny z odciskiem skonfigurowanym w identyfikatorze klienta. Aby to zrobić:
- Otwórz Konsolę Play i otwórz stronę 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 jest on prawidłowo 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
. Upewnij się, że ustawiona wartość to 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...
}
}