Введение
Ниже приводится руководство по отладке процесса компиляции и сборки игр Unity с использованием Firebase SDK для Unity. В нем описывается, как исследовать и решать многие наиболее распространенные проблемы, с которыми вы можете столкнуться при настройке и создании игры для новой платформы или после обновления. Он расположен в порядке возникновения этих ошибок в процессе. Прочитайте их по порядку и действуйте по мере решения каждого из них.
В дополнение к этому документу для получения дополнительной информации обратитесь к FAQ по Firebase for Unity .
Проблемы с компиляцией в режиме воспроизведения
Первый класс проблем сборки может возникнуть во время тестирования в редакторе перед попыткой запуска мобильной сборки. В этом разделе рассматриваются все ошибки Firebase, возникающие до и во время режима воспроизведения.
Когда Unity запускается или обнаруживает изменения в зависимостях, коде или других ресурсах, он пытается пересобрать проект. Если в этот момент проект не удастся скомпилировать, редактор зарегистрирует ошибки компиляции на консоли, и если вы попытаетесь войти в режим воспроизведения, вы получите всплывающее окно с ошибкой на вкладке «Сцена» Unity с надписью All compiler errors have to be fixed before you can enter playmode!
.
Отладка проблем компиляции, связанных с Firebase
Отсутствующие типы, классы, методы и члены.
Многие проблемы 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>'
Шаги разрешения:
Если вы используете классы или методы Firebase в коде, убедитесь, что вы делаете их доступными, используя правильные директивы
using
для конкретных необходимых продуктов Firebase.Убедитесь, что вы импортировали соответствующие пакеты Firebase:
- Чтобы импортировать соответствующие пакеты:
- Добавьте Firebase Unity SDK как
.unitypackage
или - Найдите и выполните один из вариантов в разделе «Дополнительные параметры установки Unity» .
- Добавьте Firebase Unity SDK как
- Убедитесь, что каждый продукт Firebase в вашем проекте и EDM4U :
- Находятся в той же версии
- Были установлены либо исключительно как
.unitypackage
, либо исключительно через диспетчер пакетов Unity.
- Чтобы импортировать соответствующие пакеты:
Если вы импортировали Firebase Unity SDK до версии «10.0.0» как
.unitypackage
, zip-архив Firebase Unity SDK содержит пакеты для поддержки .NET 3.x и .NET 4.x. Убедитесь, что вы включили в свой проект только совместимый уровень .NET Framework:- Совместимость между версиями редактора Unity и уровнями .NET Framework обсуждается в разделе «Добавление Firebase в ваш проект Unity» .
- Если вы случайно импортировали пакеты Firebase на неправильном уровне .NET Framework или вам нужно переключиться с использования
.unitypackage
на один из дополнительных вариантов установки Unity , самый чистый способ — удалить все пакеты Firebase с помощью методов, упомянутых в этом разделе миграции , а затем повторно импортировать все пакеты Firebase.
Убедитесь, что ваш редактор перестраивает ваш проект и что ваши попытки воспроизведения отражают самое текущее состояние вашего проекта:
- По умолчанию редактор Unity настроен на пересборку при обнаружении изменений ресурсов или конфигурации.
- Возможно, эта функция отключена и в редакторе Unity установлено ручное обновление/перекомпиляция . Выясните это и попробуйте обновить вручную, если это так.
Ошибки выполнения режима воспроизведения
Если ваша игра запускается, но во время работы возникают проблемы с Firebase, попробуйте следующее:
Убедитесь, что вы одобряете пакеты Firebase в разделе «Безопасность и конфиденциальность» в Mac OS.
Если при запуске игры в редакторе в Mac OS вы увидите диалоговое окно с надписью «FirebaseCppApp-<version>.bundle Невозможно открыть, поскольку разработчик не может быть проверен», вы должны утвердить этот конкретный файл пакета в меню «Безопасность и конфиденциальность» Mac.
Для этого нажмите значок Apple > Системные настройки > Безопасность и конфиденциальность.
В меню безопасности, примерно посередине страницы, есть раздел, в котором говорится: «Использование FirebaseCppApp-<version>.bundle» заблокировано, поскольку оно принадлежит неустановленному разработчику».
Нажмите кнопку с надписью «Все равно разрешить» .
Вернитесь в Unity и снова нажмите Play .
Затем вы увидите предупреждение, похожее на первое:
Нажмите «Открыть» , и ваша программа сможет продолжить работу; вас больше не спросят об этом конкретном файле.
Убедитесь, что ваш проект содержит и использует действительные файлы конфигурации.
- Убедитесь, что настройки сборки установлены для целевой цели (iOS или Android) в меню «Файл» > «Настройки сборки» . Более полное обсуждение можно найти в документации по настройкам сборки Unity .
- Загрузите файл конфигурации для своего приложения (
google-services.json
для Android илиGoogleService-Info.plist
для iOS) и создайте цель из консоли Firebase в разделе «Настройки проекта» > «Ваши приложения» . Если у вас уже есть эти файлы, удалите их в своем проекте и замените их самой последней версией, убедившись, что они написаны точно так, как показано выше, без «(1)» или других цифр, прикрепленных к именам файлов. - Если консоль содержит сообщение о файлах в
Assets/StreamingAssets/
, убедитесь, что нет сообщений консоли о том, что Unity не удалось редактировать файлы там. - Убедитесь, что
Assets/StreamingAssets/google-services-desktop.json
создан и соответствует загруженному файлу конфигурации.- Если он не создается автоматически и
StreamingAssets/
не существует, вручную создайте каталог в каталогеAssets
. - Проверьте, сгенерировал ли Unity
google-services-desktop.json
.
- Если он не создается автоматически и
Убедитесь, что каждый продукт Firebase и EDM4U были установлены исключительно через .unitypackage
или через диспетчер пакетов Unity.
- Проверьте папку
Assets/
и диспетчер пакетов Unity, чтобы убедиться, что Firebase SDK и EDM4U были установлены исключительно тем или иным методом. - Некоторые плагины, разработанные Google , такие как Google Play, и сторонние плагины могут зависеть от EDM4U. Эти плагины могут включать EDM4U в свои пакеты
.unitypackage
или Unity Package Manager (UPM). Убедитесь, что в вашем проекте имеется только одна копия EDM4U. Если какие-либо пакеты UPM зависят от EDM4U, лучше всего сохранить только версии UPM EDM4U, которые можно найти на странице Google APIs for Unity Archive .
Убедитесь, что все продукты Firebase в вашем проекте имеют одну и ту же версию.
- Если Firebase SDK были установлены через
.unitypackage
, проверьте, все ли библиотекиFirebaseCppApp
в разделеAssets/Firebase/Plugins/x86_64/
имеют одну и ту же версию. - Если SDK Firebase были установлены через диспетчер пакетов Unity (UPM), откройте Windows > Диспетчер пакетов , найдите «Firebase» и убедитесь, что все пакеты Firebase имеют одну и ту же версию.
- Если ваш проект содержит разные версии 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
Отсутствующие типы, классы, методы и члены.
Многие проблемы 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>'
Шаги разрешения:
Если вы используете классы или методы Firebase в коде, убедитесь, что вы делаете их доступными, используя правильные директивы
using
для конкретных необходимых продуктов Firebase.Убедитесь, что вы импортировали соответствующие пакеты Firebase:
- Чтобы импортировать соответствующие пакеты:
- Добавьте Firebase Unity SDK как
.unitypackage
или - Найдите и выполните один из вариантов в разделе «Дополнительные параметры установки Unity» .
- Добавьте Firebase Unity SDK как
- Убедитесь, что каждый продукт Firebase в вашем проекте и EDM4U :
- Находятся в той же версии
- Были установлены либо исключительно как
.unitypackage
, либо исключительно через диспетчер пакетов Unity.
- Чтобы импортировать соответствующие пакеты:
Если вы импортировали Firebase Unity SDK до версии «10.0.0» как
.unitypackage
, zip-архив Firebase Unity SDK содержит пакеты для поддержки .NET 3.x и .NET 4.x. Убедитесь, что вы включили в свой проект только совместимый уровень .NET Framework:- Совместимость между версиями редактора Unity и уровнями .NET Framework обсуждается в разделе «Добавление Firebase в ваш проект Unity» .
- Если вы случайно импортировали пакеты Firebase на неправильном уровне .NET Framework или вам нужно переключиться с использования
.unitypackage
на один из дополнительных вариантов установки Unity , самый чистый способ — удалить все пакеты Firebase с помощью методов, упомянутых в этом разделе миграции , а затем повторно импортировать все пакеты Firebase.
Убедитесь, что ваш редактор перестраивает ваш проект и что ваши попытки воспроизведения отражают самое текущее состояние вашего проекта:
- По умолчанию редактор Unity настроен на пересборку при обнаружении изменений ресурсов или конфигурации.
- Возможно, эта функция отключена и в редакторе Unity установлено ручное обновление/перекомпиляция . Выясните это и попробуйте обновить вручную, если это так.
Ошибки выполнения режима воспроизведения
Если ваша игра запускается, но во время работы возникают проблемы с Firebase, попробуйте следующее:
Убедитесь, что вы одобряете пакеты Firebase в разделе «Безопасность и конфиденциальность» в Mac OS.
Если при запуске игры в редакторе в Mac OS вы увидите диалоговое окно с надписью «FirebaseCppApp-<version>.bundle Невозможно открыть, поскольку разработчик не может быть проверен», вы должны утвердить этот конкретный файл пакета в меню «Безопасность и конфиденциальность» Mac.
Для этого нажмите значок Apple > Системные настройки > Безопасность и конфиденциальность.
В меню безопасности, примерно посередине страницы, есть раздел, в котором говорится: «Использование FirebaseCppApp-<version>.bundle» заблокировано, поскольку оно принадлежит неустановленному разработчику».
Нажмите кнопку с надписью «Все равно разрешить» .
Вернитесь в Unity и снова нажмите Play .
Затем вы увидите предупреждение, похожее на первое:
Нажмите «Открыть» , и ваша программа сможет продолжить работу; вас больше не спросят об этом конкретном файле.
Убедитесь, что ваш проект содержит и использует действительные файлы конфигурации.
- Убедитесь, что настройки сборки установлены для целевой цели (iOS или Android) в меню «Файл» > «Настройки сборки» . Более полное обсуждение можно найти в документации по настройкам сборки Unity .
- Загрузите файл конфигурации для своего приложения (
google-services.json
для Android илиGoogleService-Info.plist
для iOS) и создайте цель из консоли Firebase в разделе «Настройки проекта» > «Ваши приложения» . Если у вас уже есть эти файлы, удалите их в своем проекте и замените их самой последней версией, убедившись, что они написаны точно так, как показано выше, без «(1)» или других цифр, прикрепленных к именам файлов. - Если консоль содержит сообщение о файлах в
Assets/StreamingAssets/
, убедитесь, что нет сообщений консоли о том, что Unity не удалось редактировать файлы там. - Убедитесь, что
Assets/StreamingAssets/google-services-desktop.json
создан и соответствует загруженному файлу конфигурации.- Если он не создается автоматически и
StreamingAssets/
не существует, вручную создайте каталог в каталогеAssets
. - Проверьте, сгенерировал ли Unity
google-services-desktop.json
.
- Если он не создается автоматически и
Убедитесь, что каждый продукт Firebase и EDM4U были установлены исключительно через .unitypackage
или через диспетчер пакетов Unity.
- Проверьте папку
Assets/
и диспетчер пакетов Unity, чтобы убедиться, что Firebase SDK и EDM4U были установлены исключительно тем или иным методом. - Некоторые плагины, разработанные Google , такие как Google Play, и сторонние плагины могут зависеть от EDM4U. Эти плагины могут включать EDM4U в свои пакеты
.unitypackage
или Unity Package Manager (UPM). Убедитесь, что в вашем проекте имеется только одна копия EDM4U. Если какие-либо пакеты UPM зависят от EDM4U, лучше всего сохранить только версии UPM EDM4U, которые можно найти на странице Google APIs for Unity Archive .
Убедитесь, что все продукты Firebase в вашем проекте имеют одну и ту же версию.
- Если Firebase SDK были установлены через
.unitypackage
, проверьте, все ли библиотекиFirebaseCppApp
в разделеAssets/Firebase/Plugins/x86_64/
имеют одну и ту же версию. - Если SDK Firebase были установлены через диспетчер пакетов Unity (UPM), откройте Windows > Диспетчер пакетов , найдите «Firebase» и убедитесь, что все пакеты Firebase имеют одну и ту же версию.
- Если ваш проект содержит разные версии 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
Отсутствующие типы, классы, методы и члены.
Многие проблемы 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>'
Шаги разрешения:
Если вы используете классы или методы Firebase в коде, убедитесь, что вы делаете их доступными, используя правильные директивы
using
для конкретных необходимых продуктов Firebase.Убедитесь, что вы импортировали соответствующие пакеты Firebase:
- Чтобы импортировать соответствующие пакеты:
- Добавьте Firebase Unity SDK как
.unitypackage
или - Найдите и выполните один из вариантов в разделе «Дополнительные параметры установки Unity» .
- Добавьте Firebase Unity SDK как
- Убедитесь, что каждый продукт Firebase в вашем проекте и EDM4U :
- Находятся в той же версии
- Были установлены либо исключительно как
.unitypackage
, либо исключительно через диспетчер пакетов Unity.
- Чтобы импортировать соответствующие пакеты:
Если вы импортировали Firebase Unity SDK до версии «10.0.0» как
.unitypackage
, zip-архив Firebase Unity SDK содержит пакеты для поддержки .NET 3.x и .NET 4.x. Убедитесь, что вы включили в свой проект только совместимый уровень .NET Framework:- Совместимость между версиями редактора Unity и уровнями .NET Framework обсуждается в разделе «Добавление Firebase в ваш проект Unity» .
- Если вы случайно импортировали пакеты Firebase на неправильном уровне .NET Framework или вам нужно переключиться с использования
.unitypackage
на один из дополнительных вариантов установки Unity , самый чистый способ — удалить все пакеты Firebase с помощью методов, упомянутых в этом разделе миграции , а затем повторно импортировать все пакеты Firebase.
Убедитесь, что ваш редактор перестраивает ваш проект и что ваши попытки воспроизведения отражают самое текущее состояние вашего проекта:
- По умолчанию редактор Unity настроен на пересборку при обнаружении изменений ресурсов или конфигурации.
- Возможно, эта функция отключена и в редакторе Unity установлено ручное обновление/перекомпиляция . Выясните это и попробуйте обновить вручную, если это так.
Ошибки выполнения режима воспроизведения
Если ваша игра запускается, но во время работы возникают проблемы с Firebase, попробуйте следующее:
Убедитесь, что вы одобряете пакеты Firebase в разделе «Безопасность и конфиденциальность» в Mac OS.
Если при запуске игры в редакторе в Mac OS вы увидите диалоговое окно с надписью «FirebaseCppApp-<version>.bundle Невозможно открыть, поскольку разработчик не может быть проверен», вы должны утвердить этот конкретный файл пакета в меню «Безопасность и конфиденциальность» Mac.
Для этого нажмите значок Apple > Системные настройки > Безопасность и конфиденциальность.
В меню безопасности, примерно посередине страницы, есть раздел, в котором говорится: «Использование FirebaseCppApp-<version>.bundle» заблокировано, поскольку оно принадлежит неустановленному разработчику».
Нажмите кнопку с надписью « Разрешить в любом случае» .
Вернитесь в Unity и снова нажмите Play .
Затем вы увидите предупреждение, похожее на первое:
Нажмите «Открыть» , и ваша программа сможет продолжить работу; вас больше не спросят об этом конкретном файле.
Убедитесь, что ваш проект содержит и использует действительные файлы конфигурации.
- Убедитесь, что настройки сборки установлены для целевой цели (iOS или Android) в меню «Файл» > «Настройки сборки» . Более полное обсуждение можно найти в документации по настройкам сборки Unity .
- Загрузите файл конфигурации для своего приложения (
google-services.json
для Android илиGoogleService-Info.plist
для iOS) и создайте цель из консоли Firebase в разделе «Настройки проекта» > «Ваши приложения» . Если у вас уже есть эти файлы, удалите их в своем проекте и замените их самой последней версией, убедившись, что они написаны точно так, как показано выше, без «(1)» или других цифр, прикрепленных к именам файлов. - Если консоль содержит сообщение о файлах в
Assets/StreamingAssets/
, убедитесь, что нет сообщений консоли о том, что Unity не удалось редактировать файлы там. - Убедитесь, что
Assets/StreamingAssets/google-services-desktop.json
создан и соответствует загруженному файлу конфигурации.- Если он не создается автоматически и
StreamingAssets/
не существует, вручную создайте каталог в каталогеAssets
. - Проверьте, сгенерировал ли Unity
google-services-desktop.json
.
- Если он не создается автоматически и
Убедитесь, что каждый продукт Firebase и EDM4U были установлены исключительно через .unitypackage
или через диспетчер пакетов Unity.
- Проверьте папку
Assets/
и диспетчер пакетов Unity, чтобы убедиться, что Firebase SDK и EDM4U были установлены исключительно тем или иным методом. - Некоторые плагины, разработанные Google , такие как Google Play, и сторонние плагины могут зависеть от EDM4U. Эти плагины могут включать EDM4U в свои пакеты
.unitypackage
или Unity Package Manager (UPM). Убедитесь, что в вашем проекте имеется только одна копия EDM4U. Если какие-либо пакеты UPM зависят от EDM4U, лучше всего сохранить только версии UPM EDM4U, которые можно найти на странице Google APIs for Unity Archive .
Убедитесь, что все продукты Firebase в вашем проекте имеют одну и ту же версию.
- Если Firebase SDK были установлены через
.unitypackage
, проверьте, все ли библиотекиFirebaseCppApp
в разделеAssets/Firebase/Plugins/x86_64/
имеют одну и ту же версию. - Если SDK Firebase были установлены через диспетчер пакетов Unity (UPM), откройте Windows > Диспетчер пакетов , найдите «Firebase» и убедитесь, что все пакеты Firebase имеют одну и ту же версию.
- Если ваш проект содержит разные версии 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>'
Шаги разрешения:
Там, где вы используете классы Firebase или методы в коде, убедитесь, что вы делаете их доступными, имея правильные
using
для конкретных необходимых продуктов Firebase.Убедитесь, что вы импортировали соответствующие пакеты Firebase:
- Чтобы импортировать соответствующие пакеты:
- Добавьте Unity SDK Firebase SDK как
.unitypackage
s или - Посмотрите и выполните одну из альтернатив в дополнительных вариантах установки Unity .
- Добавьте Unity SDK Firebase SDK как
- Убедитесь, что каждый продукт Firebase в вашем проекте и EDM4U :
- В той же версии
- Были установлены либо как
.unitypackage
S исключительно , либо исключительно через диспетчер пакетов Unity.
- Чтобы импортировать соответствующие пакеты:
Если вы импортировали SDK Unity Firebase Unity до версии «10.0.0» как
.unitypackage
S, архив Zip Unity Unity SDK содержит пакеты для поддержки .net 3.x и .net 4.x. Убедитесь, что вы включили только совместимый уровень .NET Framework в свой проект:- Совместимость между версиями редактора Unity и уровнями .NET Frameworks обсуждается в Add Firebase в ваш проект Unity .
- Если вы случайно импортировали свои пакеты Firebase на неправильном уровне .NET Framework или вам необходимо переключиться с использования
.unitypackage
S на один из дополнительных вариантов установки Unity , самый чистый способ - удалить каждый пакет Firebase с помощью методов, упомянутых в этом разделе миграции , а затем снова реимпортировать все пакеты Firebase.
Убедитесь, что ваш редактор восстанавливает ваш проект и что ваши попытки играть отражают наиболее текущее состояние вашего проекта:
- По умолчанию редактор Unity устанавливается для восстановления, когда обнаруживаются изменения актива или конфигурации.
- Возможно, что эта функциональность была отключена и что редактор Unity настроен на ручное обновление/перекомпилирование . Исследуйте это и попробуйте ручное обновление, если это так.
Ошибки времени выполнения игрового режима
Если ваша игра начинается, но сталкивается с проблемами с Firebase во время работы, попробуйте следующее:
Убедитесь, что вы одобряете пакеты Firebase в «безопасности и конфиденциальности» на Mac OS
Если при запуске вашей игры в редакторе Mac OS вам представлены диалог с надписью: «Firebasecppapp- <serse> .bundle не может быть открыт, потому что разработчик не может быть подтвержден». Вы должны утвердить этот конкретный файл пакета в меню безопасности и конфиденциальности Mac.
Для этого нажмите «Значок Apple» > «Системные предпочтения» > «Безопасность и конфиденциальность»
В меню «Безопасность», примерно на полпути на странице, есть раздел, в котором говорится, что «Firebasecppapp-<sersing> .bundle» был заблокирован от использования, потому что он не от идентифицированного разработчика ».
Нажмите кнопку с надписью с надписью, разрешите .
Вернитесь в Unity и снова нажмите игру .
Затем вы увидите предупреждение, похожее на первое:
Нажмите Open , и ваша программа сможет продолжить; Вас больше не будут спрашивать об этом конкретном файле.
Убедитесь, что ваш проект содержит и использует допустимые файлы конфигурации
- Убедитесь, что ваши настройки сборки установлены для цели, которую вы намереваете (iOS или Android) в файле> Настройки сборки . Для более полного обсуждения прочитайте документацию по настройкам сборки Unity .
- Загрузите файл конфигурации для вашего приложения (
google-services.json
для Android илиGoogleService-Info.plist
для iOS) и создайте цель из консоли Firebase в настройках проекта> Ваши приложения : если у вас уже есть эти файлы, удалите их в своем проекте и замените их на самые последнюю версию, чтобы они написаны точно так же, как показано выше без «(1)» или других цифр, прикрепленных к имена файла. - Если консоль содержит сообщение, касающееся файлов в
Assets/StreamingAssets/
, убедитесь, что нет консольных сообщений. - Убедитесь, что сгенерированы
Assets/StreamingAssets/google-services-desktop.json
и соответствует загруженному файлу конфигурации.- Если он не сгенерирован автоматически и
StreamingAssets/
не существует, вручную создайте каталог в каталогеAssets
. - Проверьте, сгенерировал ли Unity
google-services-desktop.json
.
- Если он не сгенерирован автоматически и
Убедитесь, что каждый продукт Firebase и EDM4U были установлены исключительно через .unitypackage
или MANGENCE MANGER
- Проверьте как
Assets/
так и диспетчер пакетов, и Unity Package, чтобы убедиться, что Firebase SDK и EDM4U были установлены исключительно через тот или иной метод. - Некоторые плагины, разработанные Google , такие как Google Play, и сторонние плагины могут зависеть от EDM4U. Эти плагины могут включать в себя EDM4U в их пакетах.
.unitypackage
S или Unity Package Manager (UPM). Убедитесь, что в вашем проекте есть только одна копия EDM4U. Если какие -либо пакеты UPM зависят от EDM4U, лучше всего сохранить только версии EDM4U UPM, которые можно найти на странице API Google для архива единства .
Убедитесь, что каждый продукт Firebase в вашем проекте находится в одной версии.
- Если SDK Firebase были установлены через
.unitypackage
, проверьте, находятся ли все библиотекиFirebaseCppApp
в рамкахAssets/Firebase/Plugins/x86_64/
находятся в одной и той же версии. - Если SDK Firebase были установлены через диспетчер пакетов Unity (UPM), откройте Windows > Manager , найдите «Firebase» и убедитесь, что все пакеты Firebase находятся в одной версии.
- Если ваш проект содержит различные версии 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, чтобы узнать о дополнительных вариантах.