На этой странице описано, как устранить проблемы, с которыми вы можете столкнуться при разработке игр для Android с помощью Play Games SDK.
Не удалось войти в систему
Если вам не удается войти в игру, сначала убедитесь, что вы выполнили инструкции по созданию идентификаторов клиентов и настройке игровых сервисов . Если вы по-прежнему сталкиваетесь с ошибками входа в систему, проверьте следующие пункты, чтобы убедиться, что ваша игра настроена правильно.
Проверьте теги метаданных
Ваш AndroidManifest.xml
должен содержать тег метаданных игры. Чтобы убедиться, что ваши теги метаданных настроены правильно:
Откройте файл
AndroidManifest.xml
и убедитесь, что он содержит тегmeta-data
, как показано ниже:<meta-data android:name="com.google.android.gms.games.APP_ID" android:value="@string/app_id" />
Найдите определение вашего ресурса
@string/app_id
. Обычно он определяется в XML-файле, расположенном в каталогеres/xml
, напримерres/xml/strings.xml
илиres/xml/ids.xml
.Убедитесь, что значение ресурса
@string/app_id
соответствует числовому идентификатору вашего приложения. Значение этого ресурса должно содержать только цифры. Например:<string name="app_id">123456789012</string>
Проверьте имя вашего пакета
Имя пакета вашей игры должно совпадать с именем пакета в вашем идентификаторе клиента. Чтобы проверить имя пакета:
- Откройте
AndroidManifest.xml
и убедитесь, что имя пакета вашей игры правильное. Имя пакета — это значение атрибутаpackage
в тегеmanifest
. - Проверьте имя пакета, которое вы указали при создании идентификатора клиента. Чтобы проверить имя пакета в консоли Google Play, перейдите в консоль Google Play и щелкните запись, соответствующую вашей игре. Перейдите на вкладку «Связанные приложения» и просмотрите список идентификаторов клиентов. В этом списке должно быть связанное с Android приложение, имя пакета которого соответствует имени пакета в вашем
AndroidManifest.xml
. - В случае несоответствия создайте новый идентификатор клиента с правильным именем пакета и попробуйте войти еще раз.
Проверьте отпечаток сертификата
Сертификат, которым вы подписываете свою игру, должен совпадать с отпечатком сертификата, связанным с вашим идентификатором клиента. Чтобы убедиться в этом, сначала проверьте отпечаток SHA1 вашего сертификата:
Найдите файл сертификата и получите его отпечаток SHA1. Чтобы получить отпечаток SHA1, выполните следующую команду:
keytool -exportcert -alias your-key-name -keystore /path/to/your/keystore/file -list -v
Обратите внимание на последовательность шестнадцатеричных цифр, обозначенных
SHA1:
в выводе. Это отпечаток вашего сертификата.
Затем убедитесь, что ваш инструмент сборки использует этот сертификат:
- Создайте APK-файл вашей игры с помощью инструмента сборки и подпишите его нужным сертификатом. Скопируйте созданный APK во временный каталог.
Во временном каталоге выполните следующую команду, чтобы разархивировать APK.
unzip YourGame.apk
Создайте закрытый ключ, используя файл сертификата RSA:
keytool -printcert -file META-INF/CERT.RSA
Альтернативно вы можете сгенерировать закрытый ключ, используя файл сертификата DSA:
keytool -printcert -file META-INF/CERT.DSA
Обратите внимание на последовательность шестнадцатеричных цифр в строке с надписью
SHA1:
.Эта последовательность цифр должна совпадать с отпечатком вашего сертификата, полученным на предыдущем шаге. Если есть несоответствие, ваш инструмент сборки или система не настроены для подписи вашего приложения с помощью вашего сертификата. В этом случае обратитесь к документации вашей среды сборки, чтобы определить, как ее правильно настроить, и попытайтесь войти еще раз.
Затем проверьте, соответствует ли отпечаток сертификата отпечатку пальца, настроенному в вашем идентификаторе клиента. Для этого:
- Откройте консоль Google Play и перейдите к своей игре.
- На странице сведений об игре прокрутите страницу вниз и щелкните ссылку на связанный проект Google Cloud Platform.
- В Google Cloud Platform выберите свой проект.
- На боковой панели слева выберите API и аутентификация . Убедитесь, что в отображаемом списке API статус API игровых сервисов Google Play включен .
- На боковой панели слева выберите Зарегистрированные приложения .
- Разверните раздел «Идентификатор клиента OAuth 2.0» и обратите внимание на отпечаток сертификата (SHA1).
Если этот отпечаток не совпадает с отпечатком вашего сертификата, полученным на предыдущих шагах, вам необходимо создать новый идентификатор клиента с правильным отпечатком сертификата. Вы должны создать новый идентификатор клиента в консоли Google Play, а не в Google Cloud Platform.
Убедитесь, что тестовые учетные записи включены
Прежде чем игра будет опубликована, учетная запись, создавшая игру, в консоли Google Play также должна быть активирована в качестве тестера. Чтобы проверить правильность настройки:
- Откройте консоль Google Play и перейдите к своей игре.
- Откройте вкладку « Тестирование» .
- Убедитесь, что учетная запись, под которой вы пытаетесь войти, находится в списке тестировщиков.
Если учетной записи, с помощью которой вы пытаетесь войти, нет в списке, добавьте ее в список, подождите несколько минут и попробуйте войти еще раз.
Проблемы с прогардом
Если вы используете Proguard и видите ошибки в запутанном APK, проверьте целевой уровень API в AndroidManifest.xml
. Обязательно установите значение 17 или выше.
Другие причины проблем с настройкой
Проверьте другие распространенные причины ошибок:
- Если ваша игра опубликована, убедитесь, что настройки игры также опубликованы (можно опубликовать приложение без публикации настроек игры). Для этого перейдите в консоль Google Play, перейдите к своему приложению и установите флажок рядом с названием игры, указывающий, что она опубликована. Если указано, что она находится в другом состоянии, например «Готово к публикации» или «Готово к тестированию», щелкните поле и выберите «Опубликовать игру» .
- Если вы не можете опубликовать свою игру, убедитесь, что ровно для одного из идентификаторов клиента включена опция «Это приложение является предпочтительным для новых установок» .
Анонимные слушатели
Не используйте анонимных прослушивателей. Анонимные прослушиватели — это реализации интерфейса прослушивателя, которые определены в строке, как показано ниже.
ImageManager im = ...;
// Anonymous listener -- dangerous:
im.loadImage(new ImageManager.OnImageLoadedListener() {
@Override
public void onImageLoaded(Uri uri, Drawable drawable) {
// ...code...
}
}
Анонимные прослушиватели ненадежны, поскольку Play Games SDK поддерживает их как слабые ссылки, а это означает, что они могут быть удалены сборщиком мусора до того, как они будут вызваны. Вместо этого вам следует реализовать прослушиватель, используя постоянный объект, такой как 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...
}
}