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

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

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

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

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

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

Если вы импортируете подключаемый модуль Firebase, несовместимый с версией .NET, включенной в ваш проект, вы увидите ошибки компиляции некоторых типов в платформе .NET, которые реализуются 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, перейдите в Assets> Play Services Резольвер> Версия Handler> Update для того, чтобы правильные библиотеки DLL для вашего проекта.

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

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

Поэтому Firebase Unity SDK версия 5.4.0 , а затем предоставляет экспедиторские библиотеки DLL типа , которые пересылают Тип разбора (например, Анализировать осуществление 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.

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

В целях поддержки версий единства , которые не имеют возможности настроить сборку 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 .

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

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

Cannot fit requested classes in a single dex file.

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

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

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

  • Если Custom Gradle Template под Player Settings включен, изменить 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 отключен desugaring для всех своих 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 - desugaring неудачи сборки .