Инициализация игрового клиента на Android - программирование
Подтвердить что ты не робот

Инициализация игрового клиента на 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

Спасибо за любую помощь

4b9b3361

Ответ 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 в файл строк. К моему изумлению, ошибка исчезла, и появилась таблица лидеров!