Join us in person and online for Firebase Summit on October 18, 2022. Learn how Firebase can help you accelerate app development, release your app with confidence, and scale with ease. Register now

Устранение неполадок и часто задаваемые вопросы для Unity и Firebase

Оптимизируйте свои подборки Сохраняйте и классифицируйте контент в соответствии со своими настройками.

На этой странице представлены советы и рекомендации по устранению неполадок, связанных с Unity, с которыми вы можете столкнуться при использовании Firebase.

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

Совместимость с .NET при использовании Unity 2017.x и более поздних версий

Firebase поддерживает .NET 4.x в качестве экспериментального варианта сборки в Unity 2017 и более поздних версиях. Подключаемые модули Firebase используют компоненты Parse SDK для предоставления некоторых классов .NET 4.x в более ранних версиях .NET.

Поэтому Firebase Unity SDK версии 5.4.0 и более поздних версий предоставляет подключаемые модули, совместимые с .NET 3.x или .NET 4.x, в dotnet3 и dotnet4 пакета Firebase Unity SDK.

Если вы импортируете подключаемый модуль Firebase, который несовместим с версией .NET, включенной в ваш проект, вы увидите ошибки компиляции некоторых типов в .NET Framework, реализованных Parse SDK.

Чтобы устранить ошибку компиляции, если вы используете .NET 3.x:

  1. Удалите или отключите следующие библиотеки DLL для всех платформ:
    • Parse/Plugins/dotNet45/Unity.Compat.dll
    • Parse/Plugins/dotNet45/Unity.Tasks.dll
  2. Включите следующие библиотеки DLL для всех платформ:
    • Parse/Plugins/Unity.Compat.dll
    • Parse/Plugins/Unity.Tasks.dll

Чтобы устранить ошибку компиляции, если вы используете .NET 4.x:

  1. Удалите или отключите следующие библиотеки DLL для всех платформ:
    • Parse/Plugins/Unity.Compat.dll
    • Parse/Plugins/Unity.Tasks.dll
  2. Включите следующие библиотеки DLL для всех платформ:
    • Parse/Plugins/dotNet45/Unity.Compat.dll
    • Parse/Plugins/dotNet45/Unity.Tasks.dll

Если вы импортируете другой плагин Firebase:

  • В своем проекте Unity перейдите в раздел « Активы » > «Преобразователь сервисов Play» > « Обработчик версий» > « Обновить », чтобы включить правильные библиотеки DLL для вашего проекта.

Компиляция Unity 2017.1 IL2CPP в проектах .NET 4.x

Firebase поддерживает .NET 4.x в качестве экспериментального варианта сборки в Unity 2017 и более поздних версиях. Подключаемые модули Firebase используют компоненты Parse SDK для предоставления некоторых классов .NET 4.x в более ранних версиях .NET.

Поэтому Firebase Unity SDK версии 5.4.0 и более поздних версий предоставляет библиотеки DLL переадресации типов, которые пересылают типы Parse (например, реализацию Parse System.Threading.Tasks.Task ) в инфраструктуру .NET. К сожалению, IL2CPP (транспилятор, преобразующий C# в C++), поставляемый в Unity 2017.1.x, неправильно обрабатывает библиотеки DLL переадресации типов, что приводит к ошибкам сборки, подобным следующим:

Fatal error in Unity CIL Linker Mono.Cecil.ResolutionException: Failed to
resolve System.Threading.Tasks.TaskCompletionSource`1<T>

В настоящее время обходной путь для ошибок сборки .NET 4.x IL2CPP в Unity 2017.1 отсутствует, поэтому необходимо выполнить обновление до Unity 2017.2 или более поздней версии, чтобы использовать .NET 4.x в проектах, скомпилированных с помощью IL2CPP.

Сеть Unity 2017.2

База данных Firebase Realtime создает сетевые подключения TLS с использованием сетевого стека .NET. Функциональность TLS не работает в Unity 2017.2 при использовании .NET 4.6, что приводит к сбою подключаемого модуля Realtime Database в редакторах и на рабочем столе.

Обходного решения этой проблемы нет, поэтому необходимо использовать другую версию Unity, например версию 2017.1 или 2017.3.

Отсутствует файл конфигурации Firebase Android в Unity 2020

Для поддержки версий Unity, в которых нет возможности настраивать сборку Gradle, инструмент редактора Firebase создает Assets/Plugins/Android/Firebase/res/values/google-services.xml в качестве ресурса Android для упаковки в Сборка Android, чтобы Firebase SDK мог использовать ее для инициализации экземпляра FirebaseApp по умолчанию.

В Unity 2020 все ресурсы Android должны находиться в каталогах с суффиксом .androidlib . Если в вашем проекте используется Firebase SDK, который создает каталог Assets/Plugins/Android/Firebase , переименуйте его в Assets/Plugins/Android/Firebase.androidlib . Убедитесь, что он содержит AndroidManifest.xml , project.properties и res/values/google-services.xml .

Проблема с одним dex при создании приложения для Android

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

Cannot fit requested classes in a single dex file.

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

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

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

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

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

Поддержка Java 8 и удаление шумов для сборок Android в Unity 2017 и Unity 2018 (Firebase Unity SDK 8.0.0 и выше)

В мае 2021 года (Firebase BoM v28.0.0) Firebase отключила дешугаринг для всех своих библиотек Android (см. примечание к выпуску ). При создании приложения для Android с помощью Firebase Unity SDK (8.0.0 и выше) вы можете увидеть следующую ошибку сборки:

> Error while dexing.
 The dependency contains Java 8 bytecode. Please enable desugaring by adding the following to build.gradle

Это изменение касается только сборок Android в Unity 2017 и Unity 2018. Более новые версии Unity добавляют блок compileOptions по умолчанию в файлы сборки gradle. Чтобы исправить эту ошибку сборки в Unity 2017 и Unity 2018, выполните одно из следующих действий:

  • Добавьте блок compileOptions в свой шаблон gradle:

    1. Используйте Gradle в качестве системы сборки.
    2. Включите Custom Gradle Template в Player Settings .
    3. Добавьте следующие строки в mainTemplate.gradle (или build.gradle на уровне модуля, если вы экспортируете проект для Android Studio):

      android {
          compileOptions {
              sourceCompatibility 1.8
              targetCompatibility 1.8
          }
      }
      
  • В качестве альтернативы увеличьте minSdkVersion для вашего проекта Android до 26 или выше.

См. также раздел «Устранение неполадок Android — устранение ошибок сборки» .

Проблемы при сборке для iOS с помощью Cocoapods

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

  • Из терминала запустите pod install напрямую и откройте полученный файл xcworkspace.

  • Понизьте версию Cocoapods до 1.10.2. Проблема существует только в версии 1.11 и новее.

  • В вашем ~/.bash_profile или его эквиваленте добавьте export LANG=en_US.UTF-8

Как обновить версию Firebase Unity SDK

Процесс обновления версий Firebase Unity SDK зависит от того, как они были изначально импортированы. Вот два альтернативных метода импорта:

  • Импорт файлов .unitypackage в каталог Assets/ вашего проекта
  • Импорт с помощью диспетчера пакетов Unity (UPM)
    • Это рекомендуемый способ управления пакетами в Unity 2018.4+.
    • Используйте этот метод, чтобы упростить обновление будущих версий и очистить каталог Assets/ .

В вашем проекте Unity вы должны использовать только один метод импорта для управления всеми вашими пакетами Firebase. Приведенные ниже инструкции можно использовать не только для обновления версий отдельных пакетов, но и, при необходимости, для переноса управления пакетами в UPM (рекомендуемый метод импорта).