Отладка процесса сборки, установки и запуска игры

Введение

Ниже приводится руководство по отладке процесса компиляции и сборки игр Unity с использованием Firebase SDK для Unity. В нем описывается, как исследовать и решать многие наиболее распространенные проблемы, с которыми вы можете столкнуться при настройке и создании игры для новой платформы или после обновления. Он расположен в порядке возникновения этих ошибок в процессе. Прочитайте их по порядку и действуйте по мере решения каждого из них.

В дополнение к этому документу для получения дополнительной информации обратитесь к FAQ по Firebase for Unity .

Проблемы с компиляцией в режиме воспроизведения

Первый класс проблем сборки может возникнуть во время тестирования в редакторе перед попыткой запуска мобильной сборки. В этом разделе рассматриваются все ошибки Firebase, возникающие до и во время режима воспроизведения.

Когда Unity запускается или обнаруживает изменения в зависимостях, коде или других ресурсах, он пытается пересобрать проект. Если в этот момент проект не удастся скомпилировать, редактор зарегистрирует ошибки компиляции на консоли, и если вы попытаетесь войти в режим воспроизведения, вы получите всплывающее окно с ошибкой на вкладке «Сцена» Unity с надписью All compiler errors have to be fixed before you can enter playmode! .

Отсутствующие типы, классы, методы и члены.

Многие проблемы Firebase возникают из-за неспособности редактора и компилятора найти необходимые типы, классы, методы и члены. Распространенными симптомами этого являются следующие варианты:

The type or namespace name '<CLASS OR NAMESPACE NAME>' could not be found. Are you missing a using directive or an assembly reference?

The type or namespace name <TYPE OR NAMESPACE NAME> does not exist in the namespace 'Firebase<.OPTIONAL NESTED NAMESPACE NAME PATH>' (are you missing an assembly reference?)

'<CLASS NAME>' does not contain a definition for '<MEMBER VARIABLE OR METHOD NAME>'

Шаги разрешения:
  1. Если вы используете классы или методы Firebase в коде, убедитесь, что вы делаете их доступными, используя правильные директивы using для конкретных необходимых продуктов Firebase.

    1. Примеры из MechaHamster: Level Up With Firebase Edition :
      1. using Firebase.RemoteConfig;
      2. using Firebase.Crashlytics;
  2. Убедитесь, что вы импортировали соответствующие пакеты Firebase:

    1. Чтобы импортировать соответствующие пакеты:
      1. Добавьте Firebase Unity SDK как .unitypackage или
      2. Найдите и выполните один из вариантов в разделе «Дополнительные параметры установки Unity» .
    2. Убедитесь, что каждый продукт Firebase в вашем проекте и EDM4U :
      • Находятся в той же версии
      • Были установлены либо исключительно как .unitypackage , либо исключительно через диспетчер пакетов Unity.
  3. Если вы импортировали Firebase Unity SDK до версии «10.0.0» как .unitypackage , zip-архив Firebase Unity SDK содержит пакеты для поддержки .NET 3.x и .NET 4.x. Убедитесь, что вы включили в свой проект только совместимый уровень .NET Framework:

    1. Совместимость между версиями редактора Unity и уровнями .NET Framework обсуждается в разделе «Добавление Firebase в ваш проект Unity» .
    2. Если вы случайно импортировали пакеты Firebase на неправильном уровне .NET Framework или вам нужно переключиться с использования .unitypackage на один из дополнительных вариантов установки Unity , самый чистый способ — удалить все пакеты Firebase с помощью методов, упомянутых в этом разделе миграции , а затем повторно импортировать все пакеты Firebase.
  4. Убедитесь, что ваш редактор перестраивает ваш проект и что ваши попытки воспроизведения отражают самое текущее состояние вашего проекта:

    1. По умолчанию редактор Unity настроен на пересборку при обнаружении изменений ресурсов или конфигурации.
    2. Возможно, эта функция отключена и в редакторе Unity установлено ручное обновление/перекомпиляция . Выясните это и попробуйте обновить вручную, если это так.

Ошибки выполнения режима воспроизведения

Если ваша игра запускается, но во время работы возникают проблемы с Firebase, попробуйте следующее:

Убедитесь, что вы одобряете пакеты Firebase в разделе «Безопасность и конфиденциальность» в Mac OS.

Если при запуске игры в редакторе в Mac OS вы увидите диалоговое окно с надписью «FirebaseCppApp-<version>.bundle Невозможно открыть, поскольку разработчик не может быть проверен», вы должны утвердить этот конкретный файл пакета в меню «Безопасность и конфиденциальность» Mac.

Для этого нажмите значок Apple > Системные настройки > Безопасность и конфиденциальность.

В меню безопасности, примерно посередине страницы, есть раздел, в котором говорится: «Использование FirebaseCppApp-<version>.bundle» заблокировано, поскольку оно принадлежит неустановленному разработчику».

Нажмите кнопку с надписью «Все равно разрешить» .

c35166e224cce720.png

Вернитесь в Unity и снова нажмите Play .

Затем вы увидите предупреждение, похожее на первое:

5ad9ddb0d3a52892.png

Нажмите «Открыть» , и ваша программа сможет продолжить работу; вас больше не спросят об этом конкретном файле.

Убедитесь, что ваш проект содержит и использует действительные файлы конфигурации.

  1. Убедитесь, что настройки сборки установлены для целевой цели (iOS или Android) в меню «Файл» > «Настройки сборки» . Более полное обсуждение можно найти в документации по настройкам сборки Unity .
  2. Загрузите файл конфигурации для своего приложения ( google-services.json для Android или GoogleService-Info.plist для iOS) и создайте цель из консоли Firebase в разделе «Настройки проекта» > «Ваши приложения» . Если у вас уже есть эти файлы, удалите их в своем проекте и замените их самой последней версией, убедившись, что они написаны точно так, как показано выше, без «(1)» или других цифр, прикрепленных к именам файлов.
  3. Если консоль содержит сообщение о файлах в Assets/StreamingAssets/ , убедитесь, что нет сообщений консоли о том, что Unity не удалось редактировать файлы там.
  4. Убедитесь, что Assets/StreamingAssets/google-services-desktop.json создан и соответствует загруженному файлу конфигурации.
    • Если он не создается автоматически и StreamingAssets/ не существует, вручную создайте каталог в каталоге Assets .
    • Проверьте, сгенерировал ли Unity google-services-desktop.json .

Убедитесь, что каждый продукт Firebase и EDM4U были установлены исключительно через .unitypackage или через диспетчер пакетов Unity.

  1. Проверьте папку Assets/ и диспетчер пакетов Unity, чтобы убедиться, что Firebase SDK и EDM4U были установлены исключительно тем или иным методом.
  2. Некоторые плагины, разработанные Google , такие как Google Play, и сторонние плагины могут зависеть от EDM4U. Эти плагины могут включать EDM4U в свои пакеты .unitypackage или Unity Package Manager (UPM). Убедитесь, что в вашем проекте имеется только одна копия EDM4U. Если какие-либо пакеты UPM зависят от EDM4U, лучше всего сохранить только версии UPM EDM4U, которые можно найти на странице Google APIs for Unity Archive .

Убедитесь, что все продукты Firebase в вашем проекте имеют одну и ту же версию.

  1. Если Firebase SDK были установлены через .unitypackage , проверьте, все ли библиотеки FirebaseCppApp в разделе Assets/Firebase/Plugins/x86_64/ имеют одну и ту же версию.
  2. Если SDK Firebase были установлены через диспетчер пакетов Unity (UPM), откройте Windows > Диспетчер пакетов , найдите «Firebase» и убедитесь, что все пакеты Firebase имеют одну и ту же версию.
  3. Если ваш проект содержит разные версии Firebase SDK, мы рекомендуем полностью удалить все Firebase SDK перед повторной установкой всех Firebase SDK, на этот раз с теми же версиями. Самый чистый способ — удалить все пакеты Firebase с помощью методов, упомянутых в этом разделе миграции .

Ошибки сборки преобразователя и целевого устройства

Если ваша игра работает в редакторе (настроенном для выбранной вами цели сборки), затем убедитесь, что диспетчер внешних зависимостей для Unity (EDM4U) правильно настроен и работает.

Репозиторий EDM4U на GitHub содержит пошаговое руководство для этой части процесса, которое вам следует просмотреть и следовать ему, прежде чем продолжить.

Проблемы и минификация «Single Dex» ( обязательно при использовании Cloud Firestore)

При создании приложения для Android вы можете столкнуться со сбоем сборки, связанным с наличием одного файла dex. Сообщение об ошибке выглядит примерно так (если ваш проект настроен на использование системы сборки Gradle):

Cannot fit requested classes in a single dex file.

Файлы .dex используются для хранения набора определений классов и связанных с ними дополнительных данных для приложений Android. Один файл dex может содержать только 65 536 методов; сборка завершится неудачно, если общее количество методов из всех библиотек Android в вашем проекте превысит этот предел.

Следующие два шага можно применять последовательно; включайте multidex только в том случае, если минификация не решает проблему.

Включить минификацию

Unity представила минификацию в 2017.2 для удаления неиспользуемого кода, что может уменьшить общее количество ссылочных методов в одном dex-файле. * Эту опцию можно найти в настройках проигрывателя > Android > Настройки публикации > Минимизировать . * Параметры могут различаться в разных версиях Unity, поэтому обратитесь к официальной документации Unity.

Включить мультидекс

Если после включения минификации количество ссылочных методов все еще превышает лимит, другой вариант — включить multidex . В Unity есть несколько способов добиться этого:

  • Если в настройках проигрывателя включен пользовательский шаблон Gradle , измените mainTemplate.gradle .
  • Если вы используете Android Studio для сборки экспортированного проекта, измените файл build.gradle на уровне модуля.

Более подробную информацию можно найти в руководстве пользователя multidex .

Понимание и исправление ошибок времени выполнения целевого устройства

Если ваша игра работает в редакторе и может быть собрана и установлена ​​на ваше целевое устройство, но вы столкнулись с ошибками во время выполнения, проверьте и изучите журналы, созданные на устройстве .

В этом разделе описывается, как исследовать журналы на предмет возможных ошибок, а также одной такой ошибки, которая возникает только во время выполнения на устройстве или симуляторе.

Андроид

Симулятор

  • Просмотрите журналы, отображаемые в консоли вашего эмулятора, или просмотрите окно Logcat .

Устройство

Ознакомьтесь с adb и adb logcat и узнайте, как их использовать.

  • Хотя вы можете использовать различные инструменты вашей среды командной строки для фильтрации вывода, рассмотрите альтернативный вариант — изучить параметры logcat.
  • Простой способ начать сеанс ADB с чистого листа:

    adb logcat -c && adb logcat <OPTIONS>

    где OPTIONS — это те флаги, которые вы передаете в командной строке для фильтрации вывода.

Использование Logcat через Android Studio

При использовании Logcat через Android Studio доступны дополнительные инструменты поиска , которые упрощают создание продуктивного поиска.

iOS

Проверка журналов

Если вы используете физическое устройство, подключите его к компьютеру. Проверьте lldb в Xcode.

Свифт Проблемы

Если вы столкнетесь с журналами ошибок, в которых упоминается Swift, обратитесь к разделу «Диспетчер внешних зависимостей для Unity» .

Дальнейшие шаги

Если в вашей игре по-прежнему возникают проблемы с компиляцией, сборкой или запуском, связанные с Firebase, изучите страницу проблем с Firebase SDK для Unity и рассмотрите возможность регистрации новой проблемы. Кроме того, посетите страницу поддержки Firebase, чтобы узнать о дополнительных опциях.

,

Введение

Ниже приводится руководство по отладке процесса компиляции и сборки игр Unity с использованием Firebase SDK для Unity. В нем описывается, как исследовать и решать многие наиболее распространенные проблемы, с которыми вы можете столкнуться при настройке и создании игры для новой платформы или после обновления. Он расположен в порядке возникновения этих ошибок в процессе. Прочитайте их по порядку и действуйте по мере решения каждого из них.

В дополнение к этому документу для получения дополнительной информации обратитесь к FAQ по Firebase for Unity .

Проблемы с компиляцией в режиме воспроизведения

Первый класс проблем сборки может возникнуть во время тестирования в редакторе перед попыткой запуска мобильной сборки. В этом разделе рассматриваются все ошибки Firebase, возникающие до и во время режима воспроизведения.

Когда Unity запускается или обнаруживает изменения в зависимостях, коде или других ресурсах, он пытается пересобрать проект. Если в этот момент проект не удастся скомпилировать, редактор зарегистрирует ошибки компиляции на консоли, и если вы попытаетесь войти в режим воспроизведения, вы получите всплывающее окно с ошибкой на вкладке «Сцена» Unity с надписью All compiler errors have to be fixed before you can enter playmode! .

Отсутствующие типы, классы, методы и члены.

Многие проблемы Firebase возникают из-за неспособности редактора и компилятора найти необходимые типы, классы, методы и члены. Распространенными симптомами этого являются следующие варианты:

The type or namespace name '<CLASS OR NAMESPACE NAME>' could not be found. Are you missing a using directive or an assembly reference?

The type or namespace name <TYPE OR NAMESPACE NAME> does not exist in the namespace 'Firebase<.OPTIONAL NESTED NAMESPACE NAME PATH>' (are you missing an assembly reference?)

'<CLASS NAME>' does not contain a definition for '<MEMBER VARIABLE OR METHOD NAME>'

Шаги разрешения:
  1. Если вы используете классы или методы Firebase в коде, убедитесь, что вы делаете их доступными, используя правильные директивы using для конкретных необходимых продуктов Firebase.

    1. Примеры из MechaHamster: Level Up With Firebase Edition :
      1. using Firebase.RemoteConfig;
      2. using Firebase.Crashlytics;
  2. Убедитесь, что вы импортировали соответствующие пакеты Firebase:

    1. Чтобы импортировать соответствующие пакеты:
      1. Добавьте Firebase Unity SDK как .unitypackage или
      2. Найдите и выполните один из вариантов в разделе «Дополнительные параметры установки Unity» .
    2. Убедитесь, что каждый продукт Firebase в вашем проекте и EDM4U :
      • Находятся в той же версии
      • Были установлены либо исключительно как .unitypackage , либо исключительно через диспетчер пакетов Unity.
  3. Если вы импортировали Firebase Unity SDK до версии «10.0.0» как .unitypackage , zip-архив Firebase Unity SDK содержит пакеты для поддержки .NET 3.x и .NET 4.x. Убедитесь, что вы включили в свой проект только совместимый уровень .NET Framework:

    1. Совместимость между версиями редактора Unity и уровнями .NET Framework обсуждается в разделе «Добавление Firebase в ваш проект Unity» .
    2. Если вы случайно импортировали пакеты Firebase на неправильном уровне .NET Framework или вам нужно переключиться с использования .unitypackage на один из дополнительных вариантов установки Unity , самый чистый способ — удалить все пакеты Firebase с помощью методов, упомянутых в этом разделе миграции , а затем повторно импортировать все пакеты Firebase.
  4. Убедитесь, что ваш редактор перестраивает ваш проект и что ваши попытки воспроизведения отражают самое текущее состояние вашего проекта:

    1. По умолчанию редактор Unity настроен на пересборку при обнаружении изменений ресурсов или конфигурации.
    2. Возможно, эта функция отключена и в редакторе Unity установлено ручное обновление/перекомпиляция . Выясните это и попробуйте обновить вручную, если это так.

Ошибки выполнения режима воспроизведения

Если ваша игра запускается, но во время работы возникают проблемы с Firebase, попробуйте следующее:

Убедитесь, что вы одобряете пакеты Firebase в разделе «Безопасность и конфиденциальность» в Mac OS.

Если при запуске игры в редакторе в Mac OS вы увидите диалоговое окно с надписью «FirebaseCppApp-<version>.bundle Невозможно открыть, поскольку разработчик не может быть проверен», вы должны утвердить этот конкретный файл пакета в меню «Безопасность и конфиденциальность» Mac.

Для этого нажмите значок Apple > Системные настройки > Безопасность и конфиденциальность.

В меню безопасности, примерно посередине страницы, есть раздел, в котором говорится: «Использование FirebaseCppApp-<version>.bundle» заблокировано, поскольку оно принадлежит неустановленному разработчику».

Нажмите кнопку с надписью «Все равно разрешить» .

c35166e224cce720.png

Вернитесь в Unity и снова нажмите Play .

Затем вы увидите предупреждение, похожее на первое:

5ad9ddb0d3a52892.png

Нажмите «Открыть» , и ваша программа сможет продолжить работу; вас больше не спросят об этом конкретном файле.

Убедитесь, что ваш проект содержит и использует действительные файлы конфигурации.

  1. Убедитесь, что настройки сборки установлены для целевой цели (iOS или Android) в меню «Файл» > «Настройки сборки» . Более полное обсуждение можно найти в документации по настройкам сборки Unity .
  2. Загрузите файл конфигурации для своего приложения ( google-services.json для Android или GoogleService-Info.plist для iOS) и создайте цель из консоли Firebase в разделе «Настройки проекта» > «Ваши приложения» . Если у вас уже есть эти файлы, удалите их в своем проекте и замените их самой последней версией, убедившись, что они написаны точно так, как показано выше, без «(1)» или других цифр, прикрепленных к именам файлов.
  3. Если консоль содержит сообщение о файлах в Assets/StreamingAssets/ , убедитесь, что нет сообщений консоли о том, что Unity не удалось редактировать файлы там.
  4. Убедитесь, что Assets/StreamingAssets/google-services-desktop.json создан и соответствует загруженному файлу конфигурации.
    • Если он не создается автоматически и StreamingAssets/ не существует, вручную создайте каталог в каталоге Assets .
    • Проверьте, сгенерировал ли Unity google-services-desktop.json .

Убедитесь, что каждый продукт Firebase и EDM4U были установлены исключительно через .unitypackage или через диспетчер пакетов Unity.

  1. Проверьте папку Assets/ и диспетчер пакетов Unity, чтобы убедиться, что Firebase SDK и EDM4U были установлены исключительно тем или иным методом.
  2. Некоторые плагины, разработанные Google , такие как Google Play, и сторонние плагины могут зависеть от EDM4U. Эти плагины могут включать EDM4U в свои пакеты .unitypackage или Unity Package Manager (UPM). Убедитесь, что в вашем проекте имеется только одна копия EDM4U. Если какие-либо пакеты UPM зависят от EDM4U, лучше всего сохранить только версии UPM EDM4U, которые можно найти на странице Google APIs for Unity Archive .

Убедитесь, что все продукты Firebase в вашем проекте имеют одну и ту же версию.

  1. Если Firebase SDK были установлены через .unitypackage , проверьте, все ли библиотеки FirebaseCppApp в разделе Assets/Firebase/Plugins/x86_64/ имеют одну и ту же версию.
  2. Если SDK Firebase были установлены через диспетчер пакетов Unity (UPM), откройте Windows > Диспетчер пакетов , найдите «Firebase» и убедитесь, что все пакеты Firebase имеют одну и ту же версию.
  3. Если ваш проект содержит разные версии Firebase SDK, мы рекомендуем полностью удалить все Firebase SDK перед повторной установкой всех Firebase SDK, на этот раз с теми же версиями. Самый чистый способ — удалить все пакеты Firebase с помощью методов, упомянутых в этом разделе миграции .

Ошибки сборки преобразователя и целевого устройства

Если ваша игра работает в редакторе (настроенном для выбранной вами цели сборки), затем убедитесь, что диспетчер внешних зависимостей для Unity (EDM4U) правильно настроен и работает.

Репозиторий EDM4U на GitHub содержит пошаговое руководство для этой части процесса, которое вам следует просмотреть и следовать ему, прежде чем продолжить.

Проблемы и минификация «Single Dex» ( обязательно при использовании Cloud Firestore)

При создании приложения для Android вы можете столкнуться со сбоем сборки, связанным с наличием одного файла dex. Сообщение об ошибке выглядит примерно так (если ваш проект настроен на использование системы сборки Gradle):

Cannot fit requested classes in a single dex file.

Файлы .dex используются для хранения набора определений классов и связанных с ними дополнительных данных для приложений Android. Один файл dex может содержать только 65 536 методов; сборка завершится неудачно, если общее количество методов из всех библиотек Android в вашем проекте превысит этот предел.

Следующие два шага можно применять последовательно; включайте multidex только в том случае, если минификация не решает проблему.

Включить минификацию

Unity представила минификацию в 2017.2 для удаления неиспользуемого кода, что может уменьшить общее количество ссылочных методов в одном dex-файле. * Эту опцию можно найти в настройках проигрывателя > Android > Настройки публикации > Минимизировать . * Параметры могут различаться в разных версиях Unity, поэтому обратитесь к официальной документации Unity.

Включить мультидекс

Если после включения минификации количество ссылочных методов все еще превышает лимит, другой вариант — включить multidex . В Unity есть несколько способов добиться этого:

  • Если в настройках проигрывателя включен пользовательский шаблон Gradle , измените mainTemplate.gradle .
  • Если вы используете Android Studio для сборки экспортированного проекта, измените файл build.gradle на уровне модуля.

Более подробную информацию можно найти в руководстве пользователя multidex .

Понимание и исправление ошибок времени выполнения целевого устройства

Если ваша игра работает в редакторе и может быть собрана и установлена ​​на ваше целевое устройство, но вы столкнулись с ошибками во время выполнения, проверьте и изучите журналы, созданные на устройстве .

В этом разделе описывается, как исследовать журналы на предмет возможных ошибок, а также одной такой ошибки, которая возникает только во время выполнения на устройстве или симуляторе.

Андроид

Симулятор

  • Просмотрите журналы, отображаемые в консоли вашего эмулятора, или просмотрите окно Logcat .

Устройство

Ознакомьтесь с adb и adb logcat и узнайте, как их использовать.

  • Хотя вы можете использовать различные инструменты вашей среды командной строки для фильтрации вывода, рассмотрите альтернативный вариант — изучить параметры logcat.
  • Простой способ начать сеанс ADB с чистого листа:

    adb logcat -c && adb logcat <OPTIONS>

    где OPTIONS — это те флаги, которые вы передаете в командной строке для фильтрации вывода.

Использование Logcat через Android Studio

При использовании Logcat через Android Studio доступны дополнительные инструменты поиска , которые упрощают создание продуктивного поиска.

iOS

Проверка журналов

Если вы используете физическое устройство, подключите его к компьютеру. Проверьте lldb в Xcode.

Свифт Проблемы

Если вы столкнетесь с журналами ошибок, в которых упоминается Swift, обратитесь к разделу «Диспетчер внешних зависимостей для Unity» .

Дальнейшие шаги

Если в вашей игре по-прежнему возникают проблемы с компиляцией, сборкой или запуском, связанные с Firebase, изучите страницу проблем с Firebase SDK для Unity и рассмотрите возможность регистрации новой проблемы. Кроме того, посетите страницу поддержки Firebase, чтобы узнать о дополнительных опциях.

,

Введение

Ниже приводится руководство по отладке процесса компиляции и сборки игр Unity с использованием Firebase SDK для Unity. В нем описывается, как исследовать и решать многие наиболее распространенные проблемы, с которыми вы можете столкнуться при настройке и создании игры для новой платформы или после обновления. Он расположен в порядке возникновения этих ошибок в процессе. Прочитайте их по порядку и действуйте по мере решения каждого из них.

В дополнение к этому документу для получения дополнительной информации обратитесь к FAQ по Firebase for Unity .

Проблемы с компиляцией в режиме воспроизведения

Первый класс проблем сборки может возникнуть во время тестирования в редакторе перед попыткой запуска мобильной сборки. В этом разделе рассматриваются все ошибки Firebase, возникающие до и во время режима воспроизведения.

Когда Unity запускается или обнаруживает изменения в зависимостях, коде или других ресурсах, он пытается пересобрать проект. Если в этот момент проект не удастся скомпилировать, редактор зарегистрирует ошибки компиляции на консоли, и если вы попытаетесь войти в режим воспроизведения, вы получите всплывающее окно с ошибкой на вкладке «Сцена» Unity с надписью All compiler errors have to be fixed before you can enter playmode! .

Отсутствующие типы, классы, методы и члены.

Многие проблемы Firebase возникают из-за неспособности редактора и компилятора найти необходимые типы, классы, методы и члены. Распространенными симптомами этого являются следующие варианты:

The type or namespace name '<CLASS OR NAMESPACE NAME>' could not be found. Are you missing a using directive or an assembly reference?

The type or namespace name <TYPE OR NAMESPACE NAME> does not exist in the namespace 'Firebase<.OPTIONAL NESTED NAMESPACE NAME PATH>' (are you missing an assembly reference?)

'<CLASS NAME>' does not contain a definition for '<MEMBER VARIABLE OR METHOD NAME>'

Шаги разрешения:
  1. Если вы используете классы или методы Firebase в коде, убедитесь, что вы делаете их доступными, используя правильные директивы using для конкретных необходимых продуктов Firebase.

    1. Примеры из MechaHamster: Level Up With Firebase Edition :
      1. using Firebase.RemoteConfig;
      2. using Firebase.Crashlytics;
  2. Убедитесь, что вы импортировали соответствующие пакеты Firebase:

    1. Чтобы импортировать соответствующие пакеты:
      1. Добавьте Firebase Unity SDK как .unitypackage или
      2. Найдите и выполните один из вариантов в разделе «Дополнительные параметры установки Unity» .
    2. Убедитесь, что каждый продукт Firebase в вашем проекте и EDM4U :
      • Находятся в той же версии
      • Были установлены либо исключительно как .unitypackage , либо исключительно через диспетчер пакетов Unity.
  3. Если вы импортировали Firebase Unity SDK до версии «10.0.0» как .unitypackage , zip-архив Firebase Unity SDK содержит пакеты для поддержки .NET 3.x и .NET 4.x. Убедитесь, что вы включили в свой проект только совместимый уровень .NET Framework:

    1. Совместимость между версиями редактора Unity и уровнями .NET Framework обсуждается в разделе «Добавление Firebase в ваш проект Unity» .
    2. Если вы случайно импортировали пакеты Firebase на неправильном уровне .NET Framework или вам нужно переключиться с использования .unitypackage на один из дополнительных вариантов установки Unity , самый чистый способ — удалить все пакеты Firebase с помощью методов, упомянутых в этом разделе миграции , а затем повторно импортировать все пакеты Firebase.
  4. Убедитесь, что ваш редактор перестраивает ваш проект и что ваши попытки воспроизведения отражают самое текущее состояние вашего проекта:

    1. По умолчанию редактор Unity настроен на пересборку при обнаружении изменений ресурсов или конфигурации.
    2. Возможно, эта функция отключена и в редакторе Unity установлено ручное обновление/перекомпиляция . Выясните это и попробуйте обновить вручную, если это так.

Ошибки выполнения режима воспроизведения

Если ваша игра запускается, но во время работы возникают проблемы с Firebase, попробуйте следующее:

Убедитесь, что вы одобряете пакеты Firebase в разделе «Безопасность и конфиденциальность» в Mac OS.

Если при запуске игры в редакторе в Mac OS вы увидите диалоговое окно с надписью «FirebaseCppApp-<version>.bundle Невозможно открыть, поскольку разработчик не может быть проверен», вы должны утвердить этот конкретный файл пакета в меню «Безопасность и конфиденциальность» Mac.

Для этого нажмите значок Apple > Системные настройки > Безопасность и конфиденциальность.

В меню безопасности, примерно посередине страницы, есть раздел, в котором говорится: «Использование FirebaseCppApp-<version>.bundle» заблокировано, поскольку оно принадлежит неустановленному разработчику».

Нажмите кнопку с надписью « Разрешить в любом случае» .

c35166e224cce720.png

Вернитесь в Unity и снова нажмите Play .

Затем вы увидите предупреждение, похожее на первое:

5ad9ddb0d3a52892.png

Нажмите «Открыть» , и ваша программа сможет продолжить работу; вас больше не спросят об этом конкретном файле.

Убедитесь, что ваш проект содержит и использует действительные файлы конфигурации.

  1. Убедитесь, что настройки сборки установлены для целевой цели (iOS или Android) в меню «Файл» > «Настройки сборки» . Более полное обсуждение можно найти в документации по настройкам сборки Unity .
  2. Загрузите файл конфигурации для своего приложения ( google-services.json для Android или GoogleService-Info.plist для iOS) и создайте цель из консоли Firebase в разделе «Настройки проекта» > «Ваши приложения» . Если у вас уже есть эти файлы, удалите их в своем проекте и замените их самой последней версией, убедившись, что они написаны точно так, как показано выше, без «(1)» или других цифр, прикрепленных к именам файлов.
  3. Если консоль содержит сообщение о файлах в Assets/StreamingAssets/ , убедитесь, что нет сообщений консоли о том, что Unity не удалось редактировать файлы там.
  4. Убедитесь, что Assets/StreamingAssets/google-services-desktop.json создан и соответствует загруженному файлу конфигурации.
    • Если он не создается автоматически и StreamingAssets/ не существует, вручную создайте каталог в каталоге Assets .
    • Проверьте, сгенерировал ли Unity google-services-desktop.json .

Убедитесь, что каждый продукт Firebase и EDM4U были установлены исключительно через .unitypackage или через диспетчер пакетов Unity.

  1. Проверьте папку Assets/ и диспетчер пакетов Unity, чтобы убедиться, что Firebase SDK и EDM4U были установлены исключительно тем или иным методом.
  2. Некоторые плагины, разработанные Google , такие как Google Play, и сторонние плагины могут зависеть от EDM4U. Эти плагины могут включать EDM4U в свои пакеты .unitypackage или Unity Package Manager (UPM). Убедитесь, что в вашем проекте имеется только одна копия EDM4U. Если какие-либо пакеты UPM зависят от EDM4U, лучше всего сохранить только версии UPM EDM4U, которые можно найти на странице Google APIs for Unity Archive .

Убедитесь, что все продукты Firebase в вашем проекте имеют одну и ту же версию.

  1. Если Firebase SDK были установлены через .unitypackage , проверьте, все ли библиотеки FirebaseCppApp в разделе Assets/Firebase/Plugins/x86_64/ имеют одну и ту же версию.
  2. Если SDK Firebase были установлены через диспетчер пакетов Unity (UPM), откройте Windows > Диспетчер пакетов , найдите «Firebase» и убедитесь, что все пакеты Firebase имеют одну и ту же версию.
  3. Если ваш проект содержит разные версии Firebase SDK, мы рекомендуем полностью удалить все Firebase SDK перед повторной установкой всех Firebase SDK, на этот раз с теми же версиями. Самый чистый способ — удалить все пакеты Firebase с помощью методов, упомянутых в этом разделе миграции .

Ошибки сборки преобразователя и целевого устройства

Если ваша игра работает в редакторе (настроенном для выбранной вами цели сборки), затем убедитесь, что диспетчер внешних зависимостей для Unity (EDM4U) правильно настроен и работает.

Репозиторий EDM4U на GitHub содержит пошаговое руководство для этой части процесса, которое вам следует просмотреть и следовать ему, прежде чем продолжить.

Проблемы и минификация «Single Dex» ( обязательно при использовании Cloud Firestore)

При создании приложения для Android вы можете столкнуться со сбоем сборки, связанным с наличием одного файла dex. Сообщение об ошибке выглядит примерно так (если ваш проект настроен на использование системы сборки Gradle):

Cannot fit requested classes in a single dex file.

Файлы .dex используются для хранения набора определений классов и связанных с ними дополнительных данных для приложений Android. Один файл dex может содержать только 65 536 методов; сборка завершится неудачно, если общее количество методов из всех библиотек Android в вашем проекте превысит этот предел.

Следующие два шага можно применять последовательно; включайте multidex только в том случае, если минификация не решает проблему.

Включить минификацию

Unity представила минификацию в 2017.2 для удаления неиспользуемого кода, что может уменьшить общее количество ссылочных методов в одном dex-файле. * Эту опцию можно найти в настройках проигрывателя > Android > Настройки публикации > Минимизировать . * Параметры могут различаться в разных версиях Unity, поэтому обратитесь к официальной документации Unity.

Включить мультидекс

Если после включения минификации количество ссылочных методов все еще превышает лимит, другой вариант — включить multidex . В Unity есть несколько способов добиться этого:

  • Если в настройках проигрывателя включен пользовательский шаблон Gradle , измените mainTemplate.gradle .
  • Если вы используете Android Studio для сборки экспортированного проекта, измените файл build.gradle на уровне модуля.

Более подробную информацию можно найти в руководстве пользователя multidex .

Понимание и исправление ошибок времени выполнения целевого устройства

Если ваша игра работает в редакторе и может быть собрана и установлена ​​на ваше целевое устройство, но вы столкнулись с ошибками во время выполнения, проверьте и изучите журналы, созданные на устройстве .

В этом разделе описывается, как исследовать журналы на предмет возможных ошибок, а также одной такой ошибки, которая возникает только во время выполнения на устройстве или симуляторе.

Андроид

Симулятор

  • Просмотрите журналы, отображаемые в консоли вашего эмулятора, или просмотрите окно Logcat .

Устройство

Ознакомьтесь с adb и adb logcat и узнайте, как их использовать.

  • Хотя вы можете использовать различные инструменты вашей среды командной строки для фильтрации вывода, рассмотрите альтернативный вариант — изучить параметры logcat.
  • Простой способ начать сеанс ADB с чистого листа:

    adb logcat -c && adb logcat <OPTIONS>

    где OPTIONS — это те флаги, которые вы передаете в командной строке для фильтрации вывода.

Использование Logcat через Android Studio

При использовании Logcat через Android Studio доступны дополнительные инструменты поиска , которые упрощают создание продуктивного поиска.

iOS

Проверка журналов

Если вы используете физическое устройство, подключите его к компьютеру. Проверьте lldb в Xcode.

Свифт Проблемы

Если вы столкнетесь с журналами ошибок, в которых упоминается Swift, обратитесь к разделу «Диспетчер внешних зависимостей для Unity» .

Дальнейшие шаги

Если в вашей игре по-прежнему возникают проблемы с компиляцией, сборкой или запуском, связанные с Firebase, изучите страницу проблем с Firebase SDK для Unity и рассмотрите возможность регистрации новой проблемы. Кроме того, посетите страницу поддержки Firebase, чтобы узнать о дополнительных опциях.

,

Введение

Ниже приведено руководство по отладке процесса компиляции и сборки для игр Unity с использованием Firebase SDK для Unity. В нем описывается, как исследовать и решить многие из наиболее распространенных проблем, с которыми вы можете столкнуться при настройке и создании вашей игры для новой платформы или после обновления. Он расположен в порядке, когда эти ошибки могут возникнуть в процессе. Проконсультируйтесь с ними по порядку и продолжайте, поскольку каждый решен.

В дополнение к этому DOC, обратитесь к Firebase для FAQ Unity для получения дополнительной информации.

Проблемы компиляции режима воспроизведения

Первый класс проблем с сборкой может возникнуть при тестировании в редакторе, прежде чем попытаться запустить мобильную сборку. Этот раздел касается всех ошибок пожарной базы, которые возникают до и во время режима игры.

Когда Unity начинает или обнаруживает изменения в зависимости, коде или других активах, он попытается восстановить проект. Если проект не может компилироваться в то время, редактор будет входить в систему ошибки компиляции в консоли, и если вы попытаетесь ввести режим воспроизведения, вы получите всплывающее окно на вкладке сцены Unity, которая считывает All compiler errors have to be fixed before you can enter playmode! .

Отсутствующие типы, классы, методы и члены

Многие проблемы с пожарной базой возникают из -за неспособности редактора и компилятора найти необходимые типы, классы, методы и члены. Общие симптомы этого являются варианты следующего:

The type or namespace name '<CLASS OR NAMESPACE NAME>' could not be found. Are you missing a using directive or an assembly reference?

The type or namespace name <TYPE OR NAMESPACE NAME> does not exist in the namespace 'Firebase<.OPTIONAL NESTED NAMESPACE NAME PATH>' (are you missing an assembly reference?)

'<CLASS NAME>' does not contain a definition for '<MEMBER VARIABLE OR METHOD NAME>'

Шаги разрешения:
  1. Там, где вы используете классы Firebase или методы в коде, убедитесь, что вы делаете их доступными, имея правильные using для конкретных необходимых продуктов Firebase.

    1. Примеры из Mechahamster: выровняйте с Firebase Edition :
      1. using Firebase.RemoteConfig;
      2. using Firebase.Crashlytics;
  2. Убедитесь, что вы импортировали соответствующие пакеты Firebase:

    1. Чтобы импортировать соответствующие пакеты:
      1. Добавьте Unity SDK Firebase SDK как .unitypackage s или
      2. Посмотрите и выполните одну из альтернатив в дополнительных вариантах установки Unity .
    2. Убедитесь, что каждый продукт Firebase в вашем проекте и EDM4U :
      • В той же версии
      • Были установлены либо как .unitypackage S исключительно , либо исключительно через диспетчер пакетов Unity.
  3. Если вы импортировали SDK Unity Firebase Unity до версии «10.0.0» как .unitypackage S, архив Zip Unity Unity SDK содержит пакеты для поддержки .net 3.x и .net 4.x. Убедитесь, что вы включили только совместимый уровень .NET Framework в свой проект:

    1. Совместимость между версиями редактора Unity и уровнями .NET Frameworks обсуждается в Add Firebase в ваш проект Unity .
    2. Если вы случайно импортировали свои пакеты Firebase на неправильном уровне .NET Framework или вам необходимо переключиться с использования .unitypackage S на один из дополнительных вариантов установки Unity , самый чистый способ - удалить каждый пакет Firebase с помощью методов, упомянутых в этом разделе миграции , а затем снова реимпортировать все пакеты Firebase.
  4. Убедитесь, что ваш редактор восстанавливает ваш проект и что ваши попытки играть отражают наиболее текущее состояние вашего проекта:

    1. По умолчанию редактор Unity устанавливается для восстановления, когда обнаруживаются изменения актива или конфигурации.
    2. Возможно, что эта функциональность была отключена и что редактор Unity настроен на ручное обновление/перекомпилирование . Исследуйте это и попробуйте ручное обновление, если это так.

Ошибки времени выполнения игрового режима

Если ваша игра начинается, но сталкивается с проблемами с Firebase во время работы, попробуйте следующее:

Убедитесь, что вы одобряете пакеты Firebase в «безопасности и конфиденциальности» на Mac OS

Если при запуске вашей игры в редакторе Mac OS вам представлены диалог с надписью: «Firebasecppapp- <serse> .bundle не может быть открыт, потому что разработчик не может быть подтвержден». Вы должны утвердить этот конкретный файл пакета в меню безопасности и конфиденциальности Mac.

Для этого нажмите «Значок Apple» > «Системные предпочтения» > «Безопасность и конфиденциальность»

В меню «Безопасность», примерно на полпути на странице, есть раздел, в котором говорится, что «Firebasecppapp-<sersing> .bundle» был заблокирован от использования, потому что он не от идентифицированного разработчика ».

Нажмите кнопку с надписью с надписью, разрешите .

C35166E224CCE720.png

Вернитесь в Unity и снова нажмите игру .

Затем вы увидите предупреждение, похожее на первое:

5AD9DDB0D3A52892.PNG

Нажмите Open , и ваша программа сможет продолжить; Вас больше не будут спрашивать об этом конкретном файле.

Убедитесь, что ваш проект содержит и использует допустимые файлы конфигурации

  1. Убедитесь, что ваши настройки сборки установлены для цели, которую вы намереваете (iOS или Android) в файле> Настройки сборки . Для более полного обсуждения прочитайте документацию по настройкам сборки Unity .
  2. Загрузите файл конфигурации для вашего приложения ( google-services.json для Android или GoogleService-Info.plist для iOS) и создайте цель из консоли Firebase в настройках проекта> Ваши приложения : если у вас уже есть эти файлы, удалите их в своем проекте и замените их на самые последнюю версию, чтобы они написаны точно так же, как показано выше без «(1)» или других цифр, прикрепленных к имена файла.
  3. Если консоль содержит сообщение, касающееся файлов в Assets/StreamingAssets/ , убедитесь, что нет консольных сообщений.
  4. Убедитесь, что сгенерированы Assets/StreamingAssets/google-services-desktop.json и соответствует загруженному файлу конфигурации.
    • Если он не сгенерирован автоматически и StreamingAssets/ не существует, вручную создайте каталог в каталоге Assets .
    • Проверьте, сгенерировал ли Unity google-services-desktop.json .

Убедитесь, что каждый продукт Firebase и EDM4U были установлены исключительно через .unitypackage или MANGENCE MANGER

  1. Проверьте как Assets/ так и диспетчер пакетов, и Unity Package, чтобы убедиться, что Firebase SDK и EDM4U были установлены исключительно через тот или иной метод.
  2. Некоторые плагины, разработанные Google , такие как Google Play, и сторонние плагины могут зависеть от EDM4U. Эти плагины могут включать в себя EDM4U в их пакетах. .unitypackage S или Unity Package Manager (UPM). Убедитесь, что в вашем проекте есть только одна копия EDM4U. Если какие -либо пакеты UPM зависят от EDM4U, лучше всего сохранить только версии EDM4U UPM, которые можно найти на странице API Google для архива единства .

Убедитесь, что каждый продукт Firebase в вашем проекте находится в одной версии.

  1. Если SDK Firebase были установлены через .unitypackage , проверьте, находятся ли все библиотеки FirebaseCppApp в рамках Assets/Firebase/Plugins/x86_64/ находятся в одной и той же версии.
  2. Если SDK Firebase были установлены через диспетчер пакетов Unity (UPM), откройте Windows > Manager , найдите «Firebase» и убедитесь, что все пакеты Firebase находятся в одной версии.
  3. Если ваш проект содержит различные версии SDK Firebase, мы рекомендуем полностью удалить все SDK Firebase, прежде чем снова установить все SDK Firebase, на этот раз с одинаковыми версиями. Самый чистый способ - удалить каждую пакет Firebase с помощью методов, упомянутых в этом разделе миграции .

Ошибки настройки разрешения и целевого устройства

Если ваша игра работает в редакторе (настроенной для соответствующей цели сборки по вашему выбору), затем убедитесь, что внешний диспетчер зависимостей для Unity (EDM4U) правильно настроен и функционирует.

Репозиторий Github EDM4U содержит пошаговое руководство для этой части процесса, которую вы должны просмотреть и следить за продолжением.

Проблемы и министерство «одиночного DEX» ( обязательно при использовании Cloud Firestore)

При создании приложения Android вы можете столкнуться с сбоем сборки, связанной с наличием одного файла DEX. Сообщение об ошибке выглядит аналогично следующим (если ваш проект настроен на использование системы сборки Gradle):

Cannot fit requested classes in a single dex file.

.dex файлы используются для сохранения набора определений класса и связанных с ними дополнительных данных для приложений Android. Один файл DEX ограничен ссылкой на 65 536 методов; Сборки потерпят неудачу, если общее количество методов из всех библиотек Android в вашем проекте превышает этот предел.

Следующие два шага могут быть применены последовательно; Включите Multidex, только если министерство не решает проблему.

Включить минимификацию

Unity ввела Minification в 2017 году. * Вариант можно найти в настройках игрока> Android> Publishing Settings> Minify . * Варианты могут отличаться в разных версиях единства, поэтому обратитесь к официальной документации Unity.

Включить Multidex

Если, после того, как позволило минимизировать, количество упомянутых методов по -прежнему превышает предел, другой вариант - включить multidex . Есть несколько способов достичь этого в единстве:

  • Если пользовательский шаблон градл в настройках игрока включен, измените mainTemplate.gradle .
  • Если вы используете Android Studio для создания экспортируемого проекта, измените файл на уровне модуля build.gradle .

Более подробную информацию можно найти в Руководстве пользователя Multidex .

Понимание и исправление ошибок выполнения целевого устройства

Если ваша игра работает в редакторе и может быть построена и установлена ​​для вашего целевого устройства, но вы сталкиваетесь с ошибками времени выполнения, осмотрите и исследуйте журналы, сгенерированные на устройстве .

В этом разделе уточняет, как исследовать ваши журналы для возможных ошибок и одной такой ошибки, которая возникает только во время выполнения на устройстве или симуляторе.

Андроид

Симулятор

  • Осмотрите журналы, отображаемые в консоли вашего эмулятора или просмотрите окно LogCat .

Устройство

Познакомьтесь с ADB и ADB Logcat и как их использовать.

  • В то время как вы можете использовать различные инструменты среды вашей командной строки для фильтрации вывода, рассмотрите возможность изучения параметров LogCat.
  • Простой способ запустить сеанс ADB с чистым сланцем:

    adb logcat -c && adb logcat <OPTIONS>

    Где OPTIONS - какие флаги вы передаете командную строку, чтобы фильтровать вывод.

Использование logcat через Android Studio

При использовании LogCat через Android Studio доступны дополнительные инструменты поиска , которые упрощают генерирование продуктивных поисков.

iOS

Осмотр журналов

Если запустить физическое устройство, прикрепите его к компьютеру. Осмотрите LLDB в XCODE.

Быстрые проблемы

Если вы столкнетесь с журналами ошибок, упомянув Swift, обратитесь к разделу « Внешний менеджер зависимостей для Unity» .

Дальнейшие шаги

Если ваша игра по -прежнему содержит, строить или запустить проблемы, связанные с Firebase, расследуйте страницу Firebase SDK для Unity Asgree и рассмотрите возможность подачи новой проблемы. Кроме того, обратитесь на страницу поддержки Firebase, чтобы узнать о дополнительных вариантах.