Инициализация игрового клиента на Android
Я пытаюсь использовать новые игровые сервисы Google Play.
Сначала я выполнил эту инструкцию https://developers.google.com/games/services/android/quickstart
и затем закончил это https://developers.google.com/games/services/android/init
В итоге я получаю следующее:
05-16 20:01:39.034: E/AndroidRuntime(18257): FATAL EXCEPTION: main
05-16 20:01:39.034: E/AndroidRuntime(18257): java.lang.IllegalStateException: A fatal developer error has occurred. Check the logs for further information.
05-16 20:01:39.034: E/AndroidRuntime(18257): at com.google.android.gms.internal.p$f.a(Unknown Source)
05-16 20:01:39.034: E/AndroidRuntime(18257): at com.google.android.gms.internal.p$f.a(Unknown Source)
05-16 20:01:39.034: E/AndroidRuntime(18257): at com.google.android.gms.internal.p$b.p(Unknown Source)
05-16 20:01:39.034: E/AndroidRuntime(18257): at com.google.android.gms.internal.p$a.handleMessage(Unknown Source)
05-16 20:01:39.034: E/AndroidRuntime(18257): at android.os.Handler.dispatchMessage(Handler.java:99)
05-16 20:01:39.034: E/AndroidRuntime(18257): at android.os.Looper.loop(Looper.java:137)
05-16 20:01:39.034: E/AndroidRuntime(18257): at android.app.ActivityThread.main(ActivityThread.java:5041)
05-16 20:01:39.034: E/AndroidRuntime(18257): at java.lang.reflect.Method.invokeNative(Native Method)
05-16 20:01:39.034: E/AndroidRuntime(18257): at java.lang.reflect.Method.invoke(Method.java:511)
05-16 20:01:39.034: E/AndroidRuntime(18257): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
05-16 20:01:39.034: E/AndroidRuntime(18257): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
05-16 20:01:39.034: E/AndroidRuntime(18257): at dalvik.system.NativeStart.main(Native Method)
Я попытался выполнить шаг за шагом. Я не понимаю, что происходит не так.
ava.lang.IllegalStateException: произошла фатальная ошибка разработчика. Проверьте журналы для получения дополнительной информации.
Я думал, что logcat = logs, и больше ничего. Итак, где я могу найти эти "журналы"?
Моя реализация отличается только одной. У меня есть ClassA, который расширяет BaseGameActivity, а затем ClassB, который расширяет ClassA и реализует View.OnClickListener
Поэтому у меня есть все методы из https://developers.google.com/games/services/android/init в классе ClassB
Спасибо за любую помощь
Ответы
Ответ 1
Сначала у меня была такая же проблема. Мне нужно было посмотреть полный, нефильтрованный журнал LogCat. Там я увидел сообщение:
GamesIntentService (17929): для использования сервисов игр Google Play требуется тег метаданных с именем "com.google.android.gms.games.APP_ID" в теге приложения вашего манифеста
Итак, если вы создали запись в strings.xml
под названием app_id
, попробуйте добавить следующее к AndroidManifest.xml
в тег <application>
:
<meta-data android:name="com.google.android.gms.games.APP_ID"
android:value="@string/app_id" />
Вы можете найти свой APP_ID на вкладке Игровые службы
![**Games Services** tab]()
Ответ 2
В дополнение к ответу Hetabiquo, если вы также используете службу Cloud Save в своей игре, вы также должны обновить приложение AndroidManifest.xml, добавив следующий тег метаданных внутри области тегов <application>
<meta-data android:name="com.google.android.gms.appstate.APP_ID" android:value="@string/app_id" />
Ответ 3
У вас была одна и та же проблема, но правильный метатег - я просмотрел нефильтрованный лог-код и выяснил, что он ищет другой метатег.
Имя метатега отличается по типу номера клиента, отправленного в конструкторе GameHelper (если вы его используете).
new GameHelper(this, GameHelper.CLIENT_GAMES);
Для меня я случайно использовал CLIENT_ALL, что приводит к неправильным ожиданиям имени метатега. Я изменил его на CLIENT_GAMES, и все работало гладко.
Ответ 4
В дополнение к Hetabiquo вы можете запланировать свой APP_ID на вкладке Игровые службы:
![**Games Services** tab]()
Ответ 5
Я страдал от этой ошибки в течение довольно долгого времени. Я решил пройти через пакет basegameutils, сканируя каждый файл по одному. В классе gameHelperUtils я нашел этот метод, getAppIdFromResource(). Внутри него он запрашивал идентификатор приложения у ресурса. Я вспомнил, что жестко закодировал идентификатор приложения в файле манифеста. Затем я добавил строковый ресурс app_id в файл строк. К моему изумлению, ошибка исчезла, и появилась таблица лидеров!