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:
Otwórz stronę
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
. Jest ona zwykle zdefiniowana 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
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:
- Otwórz pakiet
AndroidManifest.xml
i sprawdź, czy nazwa pakietu gry jest prawidłowa. Nazwa pakietu to wartość atrybutupackage
w tagumanifest
. - 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
. - 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:
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 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:
- Wygeneruj plik APK gry z narzędzia do tworzenia aplikacji i podpisz go odpowiednim certyfikatem. Skopiuj wygenerowany plik APK do katalogu tymczasowego.
W tymczasowym katalogu uruchom podane niżej polecenie, aby rozpakować plik APK.
unzip YourGame.apk
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
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ć:
- Otwórz Konsolę Google Play i przejdź do gry.
- Na stronie Szczegóły gry przewiń w dół i kliknij link do połączonego projektu Google Cloud Platform.
- Wybierz projekt w Google Cloud Platform.
- 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.
- Na pasku bocznym po lewej wybierz Zarejestrowane aplikacje.
- 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:
- Otwórz Konsolę Google Play i przejdź do 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, 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...
}
}