Z tego artykułu dowiesz się, jak rozwiązywać problemy, które mogą wystąpić podczas tworzenia gier na Androida przy użyciu usług gier Google Play.
Logowanie
Aby rozwiązać problemy z grą, możesz włączyć szczegółowe logowanie na urządzeniu za pomocą polecenia adb shell
. Następnie możesz wyświetlić komunikaty z dziennika usług gier Google Play za pomocą narzędzia logcat.
Włącz rejestrowanie
Aby włączyć logowanie na urządzeniu testowym:
Połącz urządzenie z komputerem, 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 próbujesz debugować.
Wyświetl logi:
adb logcat
Wyłącz logowanie
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 do gry, 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 upewnić się, że gra jest prawidłowo skonfigurowana.
Sprawdź tagi metadanych
AndroidManifest.xml
musi zawierać tag metadanych gier. Aby sprawdzić, czy tagi metadanych są prawidłowo skonfigurowane:
Otwórz plik
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 definiowany w pliku XML, który znajduje się w katalogures/xml
, np.res/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. Na przykład:<string name="app_id">123456789012</string>
Sprawdź nazwę pakietu
Nazwa pakietu gry musi być taka sama jak nazwa pakietu podana w identyfikatorze klienta. Aby zweryfikować nazwę pakietu:
Otwórz aplikację
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 liście powinna znajdować się połączona aplikacja na Androida, której nazwa pakietu odpowiada nazwie pakietu w Twoim
AndroidManifest.xml
. Jeśli występują niezgodności, utwórz nowy identyfikator klienta z prawidłową nazwą pakietu i spróbuj zalogować się jeszcze raz.
Sprawdź odcisk cyfrowy certyfikatu
Certyfikat, którym 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 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
Zanotuj sekwencję cyfr szesnastkowych oznaczonych jako
SHA1:
w danych wyjściowych. To jest odcisk cyfrowy Twojego certyfikatu.
Następnie sprawdź, czy narzędzie do kompilacji korzysta z tego certyfikatu:
- W narzędziu do tworzenia wygeneruj plik APK gry i podpisz go odpowiednim certyfikatem. Skopiuj wygenerowany plik APK do katalogu tymczasowego.
W katalogu tymczasowym uruchom następujące polecenie, aby rozpakować pakiet APK.
unzip YourGame.apk
Wygeneruj klucz prywatny za pomocą pliku certyfikatu RSA:
keytool -printcert -file META-INF/CERT.RSA
Klucz prywatny możesz też wygenerować za pomocą pliku certyfikatu DSA:
keytool -printcert -file META-INF/CERT.DSA
Zwróć uwagę na sekwencję cyfr szesnastkowych w wierszu
SHA1:
.Ta sekwencja cyfr powinna być taka sama jak odcisk cyfrowy certyfikatu z poprzedniego kroku. Jeśli występuje niezgodność, narzędzie lub system do kompilacji nie został skonfigurowany do podpisywania aplikacji Twoim certyfikatem. W takim przypadku zapoznaj się z dokumentacją środowiska kompilacji, aby dowiedzieć się, jak je prawidłowo skonfigurować, i spróbuj zalogować się jeszcze raz.
Następnie sprawdź, czy odcisk cyfrowy certyfikatu jest zgodny z odciskiem cyfrowym skonfigurowanym w identyfikatorze klienta. Aby wykonać te działania:
- Otwórz Konsolę 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.
- Na pasku bocznym po lewej stronie wybierz APIs & auth (Interfejsy API i uwierzytelnianie). Upewnij się, że interfejs API usług gier Google Play na wyświetlanej liście interfejsów API ma stan WŁ.
- Na pasku bocznym po lewej stronie kliknij Zarejestrowane aplikacje.
- Rozwiń sekcję Identyfikator klienta OAuth 2.0 i zanotuj odcisk cyfrowy certyfikatu (SHA1).
Jeśli ten odcisk cyfrowy nie jest zgodny z odciskiem cyfrowym certyfikatu z poprzednich kroków, musisz utworzyć nowy identyfikator klienta z właściwym odciskiem certyfikatu. Nowy identyfikator klienta musisz utworzyć w Konsoli Play, a nie w projekcie Google Cloud Platform.
Sprawdź, czy konta testowe są włączone
Przed opublikowaniem gry musisz mieć włączone konto testera na koncie, z którego została ona utworzona w Konsoli Play. Aby sprawdzić, czy konfiguracja jest prawidłowa:
- Otwórz Konsolę Play i przejdź do gry.
- Otwórz kartę Testowanie.
- Sprawdź, czy konto, za pomocą którego 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, odczekaj kilka minut i spróbuj zalogować się ponownie.
Problemy z ProGuard
Jeśli używasz ProGuard i w zaciemnionym pliku APK występują błędy, sprawdź docelowy poziom interfejsu API na urządzeniu AndroidManifest.xml
. Pamiętaj, aby ustawić go na 17 lub więcej.
Inne przyczyny problemów z konfiguracją
Sprawdź, czy nie ma innych częstych przyczyn błędów:
- Jeśli gra została opublikowana, sprawdź, czy jej ustawienia również zostały opublikowane (możesz opublikować aplikację bez publikowania ustawień gier). Aby to zrobić, otwórz Konsolę Google Play, przejdź do swojej aplikacji i zaznacz pole obok nazwy gry, która wskazuje, że została opublikowana. Jeśli wskazuje, że jest w innym stanie, np. „Gotowa do publikacji” lub „Gotowa do testów”, kliknij pole i wybierz Opublikuj grę.
- Jeśli nie możesz opublikować gry, sprawdź, czy tylko jeden z identyfikatorów klienta ma włączoną opcję Ta aplikacja jest preferowana w przypadku nowych instalacji.
Anonimowi słuchacze
Nie używaj anonimowych detektorów. Anonimowe detektory to implementacje interfejsu odbiornika, które są 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...
}
}
Anonimowe detektory są zawodne, ponieważ pakiet SDK Gier Play utrzymuje je jako słabe odniesienia, co oznacza, że mogą zostać odzyskane przez moduł śmieci przed ich wywołaniem. Zamiast tego należy wdrożyć 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...
}
}