Устранение неполадок и усиление; Часто задаваемые вопросы по Unity и Firebase
На этой странице представлены советы и способы устранения проблем, связанных с Unity, с которыми вы можете столкнуться при использовании Firebase.
У вас есть другие проблемы или вы не видите свою проблему, описанную ниже? Обязательно ознакомьтесь с основными часто задаваемыми вопросами по Firebase, чтобы получить дополнительные часто задаваемые вопросы по Firebase или конкретному продукту.
Совместимость .NET при использовании Unity 2017.x и более поздних версий.
Firebase поддерживает .NET 4.x в качестве экспериментального варианта сборки в Unity 2017 и более поздних версиях. Плагины Firebase используют компоненты Parse SDK для предоставления некоторых классов .NET 4.x в более ранних версиях .NET.
Таким образом, FirebaseUnity SDK версии 5.4.0 и более поздних версий предоставляет плагины, совместимые с .NET 3.x или .NET 4.x, в каталогах dotnet3 и dotnet4FirebaseUnity SDK.
Если вы импортируете плагин Firebase, несовместимый с версией .NET, включенной в ваш проект, вы увидите ошибки компиляции некоторых типов в .NET Framework, которые реализованы Parse SDK.
Чтобы устранить ошибку компиляции, если вы используете .NET 3.x:
Удалите или отключите следующие библиотеки DLL для всех платформ:
Parse/Plugins/dotNet45/Unity.Compat.dll
Parse/Plugins/dotNet45/Unity.Tasks.dll
Включите следующие библиотеки DLL для всех платформ:
Parse/Plugins/Unity.Compat.dll
Parse/Plugins/Unity.Tasks.dll
Чтобы устранить ошибку компиляции, если вы используете .NET 4.x:
Удалите или отключите следующие библиотеки DLL для всех платформ:
Parse/Plugins/Unity.Compat.dll
Parse/Plugins/Unity.Tasks.dll
Включите следующие библиотеки DLL для всех платформ:
Parse/Plugins/dotNet45/Unity.Compat.dll
Parse/Plugins/dotNet45/Unity.Tasks.dll
Если вы импортируете другой плагин Firebase:
В своем проекте Unity перейдите в «Активы» > «Play Services Resolver» > «Обработчик версий» > «Обновить» , чтобы включить правильные библиотеки DLL для вашего проекта.
Компиляция Unity 2017.1 IL2CPP в проектах .NET 4.x
Firebase поддерживает .NET 4.x в качестве экспериментального варианта сборки в Unity 2017 и более поздних версиях. Плагины Firebase используют компоненты Parse SDK для предоставления некоторых классов .NET 4.x в более ранних версиях .NET.
Таким образом, FirebaseUnity SDK версии 5.4.0 и более поздних версий предоставляет библиотеки DLL пересылки типов, которые перенаправляют типы Parse (например, реализацию Parse System.Threading.Tasks.Task ) в платформу .NET. К сожалению, IL2CPP (транспилятор, преобразующий C# в C++), поставляемый в Unity 2017.1.x, неправильно обрабатывает библиотеки DLL пересылки типов, что приводит к ошибкам сборки, подобным следующим:
В настоящее время не существует обходного пути для ошибок сборки .NET 4.x IL2CPP в Unity 2017.1, поэтому вам необходимо выполнить обновление до Unity 2017.2 или более поздней версии, чтобы использовать .NET 4.x в проектах, скомпилированных с помощью IL2CPP.
Сеть Unity 2017.2
Firebase Realtime Database создает сетевые соединения 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 .
Проблема с одним дексом при создании приложения для Android.
При создании приложения для Android вы можете столкнуться со сбоем сборки, связанным с наличием одного файла dex. Сообщение об ошибке выглядит примерно так, как показано ниже, если ваш проект настроен на использование системы сборки Gradle.
Cannotfitrequestedclassesinasingledexfile.
Исполняемые файлы Dalvik ( .dex ) используются для хранения набора определений классов и связанных с ними дополнительных данных для приложений Android ( .apk ). Один файл dex может содержать только 65 536 методов. Сборка завершится неудачно, если общее количество методов из всех библиотек Android в вашем проекте превысит этот предел.
Unity представила минификацию в 2017.2, которая использует Proguard (или другие инструменты в некоторых версиях Unity) для удаления неиспользуемого кода, что может уменьшить общее количество ссылочных методов в одном dex-файле. Эту опцию можно найти в «Настройки проигрывателя» > «Android» > «Настройки публикации» > «Свернуть» . Параметры могут отличаться в разных версиях Unity, поэтому обратитесь к официальной документации Unity.
Если количество ссылочных методов по-прежнему превышает лимит, другой вариант — включить multidex . В Unity есть несколько способов добиться этого:
Если в Player Settings включен Custom Gradle Template , измените mainTemplate.gradle .
Если вы используете Android Studio для сборки экспортированного проекта, измените файл build.gradle на уровне модуля.
Поддержка 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 и выше) вы можете увидеть следующую ошибку сборки:
Это изменение влияет только на сборки Android в Unity 2017 и Unity 2018. В более новых версиях Unity по умолчанию в файлы сборки Gradle добавляется блок compileOptions . Чтобы исправить эту ошибку сборки в Unity 2017 и Unity 2018, выполните одно из следующих действий:
Добавьте блок compileOptions в шаблон Gradle:
Используйте Gradle в качестве системы сборки.
Включите Custom Gradle Template в Player Settings .
Добавьте следующие строки в mainTemplate.gradle (или build.gradle уровня модуля при экспорте проекта для Android Studio):
При сборке для 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 2018.4+.
Используйте этот метод, чтобы упростить обновление будущих версий и очистить каталог Assets/ .
В вашем проекте Unity вам следует использовать только один метод импорта для управления всеми вашими пакетами Firebase. Приведенные ниже инструкции можно использовать не только для обновления версий отдельных пакетов, но и, при необходимости, для переноса управления пакетами в UPM (рекомендуемый метод импорта).
Пакеты, импортированные как файлы .unitypackage в каталог Assets/
Если пакеты Firebase находятся в каталоге Assets/ , у вас есть два варианта обновления версии SDK:
Вариант 1 (рекомендуется) : перейти на использование UPM (доступно в Unity 2018.4+).
Хотя этот метод требует больше начальной настройки, чем дальнейшее использование рабочего процесса .unitypackage , он окупается простотой последующих обновлений версий SDK.
Вариант 2. Продолжайте использовать файлы .unitypackage для их импорта в каталог Assets/
Если вы загружаете firebase_unity_sdk.zip с веб-сайта Firebase, убедитесь, что вы импортируете все .unitypackages из правильной папки dotnet .
Если вы используете Unity 2019 или более позднюю версию, импортируйте из папки dotnet4 .
В противном случае выберите «Версия среды выполнения сценариев» в настройках проигрывателя и, если для нее установлено значение «.NET 3.x», импортируйте из папки dotnet3 .
Перезапись ранее импортированных версий пакетов должна выполняться автоматически Диспетчером внешних зависимостей (который автоматически включается при импорте пакетов Firebase .unitypackages ).
Однако, если и ТОЛЬКО если этот автоматический процесс завершится неудачей, вам придется вручную удалить следующие папки, а затем повторить описанный выше шаг импорта еще раз.
На этой странице представлены советы и способы устранения проблем, связанных с Unity, с которыми вы можете столкнуться при использовании Firebase.
У вас есть другие проблемы или вы не видите свою проблему, описанную ниже? Обязательно ознакомьтесь с основными часто задаваемыми вопросами по Firebase, чтобы получить дополнительные часто задаваемые вопросы по Firebase или конкретному продукту.
Совместимость .NET при использовании Unity 2017.x и более поздних версий.
Firebase поддерживает .NET 4.x в качестве экспериментального варианта сборки в Unity 2017 и более поздних версиях. Плагины Firebase используют компоненты Parse SDK для предоставления некоторых классов .NET 4.x в более ранних версиях .NET.
Таким образом, FirebaseUnity SDK версии 5.4.0 и более поздних версий предоставляет плагины, совместимые с .NET 3.x или .NET 4.x, в каталогах dotnet3 и dotnet4FirebaseUnity SDK.
Если вы импортируете плагин Firebase, несовместимый с версией .NET, включенной в ваш проект, вы увидите ошибки компиляции некоторых типов в .NET Framework, которые реализованы Parse SDK.
Чтобы устранить ошибку компиляции, если вы используете .NET 3.x:
Удалите или отключите следующие библиотеки DLL для всех платформ:
Parse/Plugins/dotNet45/Unity.Compat.dll
Parse/Plugins/dotNet45/Unity.Tasks.dll
Включите следующие библиотеки DLL для всех платформ:
Parse/Plugins/Unity.Compat.dll
Parse/Plugins/Unity.Tasks.dll
Чтобы устранить ошибку компиляции, если вы используете .NET 4.x:
Удалите или отключите следующие библиотеки DLL для всех платформ:
Parse/Plugins/Unity.Compat.dll
Parse/Plugins/Unity.Tasks.dll
Включите следующие библиотеки DLL для всех платформ:
Parse/Plugins/dotNet45/Unity.Compat.dll
Parse/Plugins/dotNet45/Unity.Tasks.dll
Если вы импортируете другой плагин Firebase:
В своем проекте Unity перейдите в «Активы» > «Play Services Resolver» > «Обработчик версий» > «Обновить» , чтобы включить правильные библиотеки DLL для вашего проекта.
Компиляция Unity 2017.1 IL2CPP в проектах .NET 4.x
Firebase поддерживает .NET 4.x в качестве экспериментального варианта сборки в Unity 2017 и более поздних версиях. Плагины Firebase используют компоненты Parse SDK для предоставления некоторых классов .NET 4.x в более ранних версиях .NET.
Таким образом, FirebaseUnity SDK версии 5.4.0 и более поздних версий предоставляет библиотеки DLL пересылки типов, которые перенаправляют типы Parse (например, реализацию Parse System.Threading.Tasks.Task ) в платформу .NET. К сожалению, IL2CPP (транспилятор, преобразующий C# в C++), поставляемый в Unity 2017.1.x, неправильно обрабатывает библиотеки DLL пересылки типов, что приводит к ошибкам сборки, подобным следующим:
В настоящее время не существует обходного пути для ошибок сборки .NET 4.x IL2CPP в Unity 2017.1, поэтому вам необходимо выполнить обновление до Unity 2017.2 или более поздней версии, чтобы использовать .NET 4.x в проектах, скомпилированных с помощью IL2CPP.
Сеть Unity 2017.2
Firebase Realtime Database создает сетевые соединения 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 .
Проблема с одним дексом при создании приложения для Android.
При создании приложения для Android вы можете столкнуться со сбоем сборки, связанным с наличием одного файла dex. Сообщение об ошибке выглядит примерно так, как показано ниже, если ваш проект настроен на использование системы сборки Gradle.
Cannotfitrequestedclassesinasingledexfile.
Исполняемые файлы Dalvik ( .dex ) используются для хранения набора определений классов и связанных с ними дополнительных данных для приложений Android ( .apk ). Один файл dex может содержать только 65 536 методов. Сборка завершится неудачно, если общее количество методов из всех библиотек Android в вашем проекте превысит этот предел.
Unity представила минификацию в 2017.2, которая использует Proguard (или другие инструменты в некоторых версиях Unity) для удаления неиспользуемого кода, что может уменьшить общее количество ссылочных методов в одном dex-файле. Эту опцию можно найти в «Настройки проигрывателя» > «Android» > «Настройки публикации» > «Свернуть» . Параметры могут отличаться в разных версиях Unity, поэтому обратитесь к официальной документации Unity.
Если количество ссылочных методов по-прежнему превышает лимит, другой вариант — включить multidex . В Unity есть несколько способов добиться этого:
Если в Player Settings включен Custom Gradle Template , измените mainTemplate.gradle .
Если вы используете Android Studio для сборки экспортированного проекта, измените файл build.gradle на уровне модуля.
Поддержка 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 и выше) вы можете увидеть следующую ошибку сборки:
Это изменение влияет только на сборки Android в Unity 2017 и Unity 2018. В более новых версиях Unity по умолчанию в файлы сборки Gradle добавляется блок compileOptions . Чтобы исправить эту ошибку сборки в Unity 2017 и Unity 2018, выполните одно из следующих действий:
Добавьте блок compileOptions в шаблон Gradle:
Используйте Gradle в качестве системы сборки.
Включите Custom Gradle Template в Player Settings .
Добавьте следующие строки в mainTemplate.gradle (или build.gradle уровня модуля при экспорте проекта для Android Studio):
При сборке для 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 2018.4+.
Используйте этот метод, чтобы упростить обновление будущих версий и очистить каталог Assets/ .
В вашем проекте Unity вам следует использовать только один метод импорта для управления всеми вашими пакетами Firebase. Приведенные ниже инструкции можно использовать не только для обновления версий отдельных пакетов, но и, при необходимости, для переноса управления пакетами в UPM (рекомендуемый метод импорта).
Пакеты, импортированные как файлы .unitypackage в каталог Assets/
Если пакеты Firebase находятся в каталоге Assets/ , у вас есть два варианта обновления версии SDK:
Вариант 1 (рекомендуется) : перейти на использование UPM (доступно в Unity 2018.4+).
Хотя этот метод требует больше начальной настройки, чем дальнейшее использование рабочего процесса .unitypackage , он окупается простотой последующих обновлений версий SDK.
Вариант 2. Продолжайте использовать файлы .unitypackage для их импорта в каталог Assets/
Если вы загружаете firebase_unity_sdk.zip с веб-сайта Firebase, убедитесь, что вы импортируете все .unitypackages из правильной папки dotnet .
Если вы используете Unity 2019 или более позднюю версию, импортируйте из папки dotnet4 .
В противном случае выберите «Версия среды выполнения сценариев» в настройках проигрывателя и, если для нее установлено значение «.NET 3.x», импортируйте из папки dotnet3 .
Перезапись ранее импортированных версий пакетов должна выполняться автоматически Диспетчером внешних зависимостей (который автоматически включается при импорте пакетов Firebase .unitypackages ).
Однако, если и ТОЛЬКО если этот автоматический процесс завершится неудачно, вам придется вручную удалить следующие папки, а затем повторить описанный выше шаг импорта еще раз.
На этой странице представлены советы и способы устранения проблем, связанных с Unity, с которыми вы можете столкнуться при использовании Firebase.
У вас есть другие проблемы или вы не видите свою проблему, описанную ниже? Обязательно ознакомьтесь с основными часто задаваемыми вопросами по Firebase, чтобы получить дополнительные часто задаваемые вопросы по Firebase или конкретному продукту.
Совместимость .NET при использовании Unity 2017.x и более поздних версий.
Firebase поддерживает .NET 4.x в качестве экспериментального варианта сборки в Unity 2017 и более поздних версиях. Плагины Firebase используют компоненты Parse SDK для предоставления некоторых классов .NET 4.x в более ранних версиях .NET.
Таким образом, FirebaseUnity SDK версии 5.4.0 и более поздних версий предоставляет плагины, совместимые с .NET 3.x или .NET 4.x, в каталогах dotnet3 и dotnet4FirebaseUnity SDK.
Если вы импортируете плагин Firebase, несовместимый с версией .NET, включенной в вашем проекте, вы увидите ошибки компиляции некоторых типов в .NET Framework, которые реализованы Parse SDK.
Чтобы устранить ошибку компиляции, если вы используете .NET 3.x:
Удалите или отключите следующие библиотеки DLL для всех платформ:
Parse/Plugins/dotNet45/Unity.Compat.dll
Parse/Plugins/dotNet45/Unity.Tasks.dll
Включите следующие библиотеки DLL для всех платформ:
Parse/Plugins/Unity.Compat.dll
Parse/Plugins/Unity.Tasks.dll
Чтобы устранить ошибку компиляции, если вы используете .NET 4.x:
Удалите или отключите следующие библиотеки DLL для всех платформ:
Parse/Plugins/Unity.Compat.dll
Parse/Plugins/Unity.Tasks.dll
Включите следующие библиотеки DLL для всех платформ:
Parse/Plugins/dotNet45/Unity.Compat.dll
Parse/Plugins/dotNet45/Unity.Tasks.dll
Если вы импортируете другой плагин Firebase:
В своем проекте Unity перейдите в «Активы» > «Play Services Resolver» > «Обработчик версий» > «Обновить» , чтобы включить правильные библиотеки DLL для вашего проекта.
Компиляция Unity 2017.1 IL2CPP в проектах .NET 4.x
Firebase поддерживает .NET 4.x в качестве экспериментального варианта сборки в Unity 2017 и более поздних версиях. Плагины Firebase используют компоненты Parse SDK для предоставления некоторых классов .NET 4.x в более ранних версиях .NET.
Таким образом, FirebaseUnity SDK версии 5.4.0 и более поздних версий предоставляет библиотеки DLL пересылки типов, которые перенаправляют типы Parse (например, реализацию Parse System.Threading.Tasks.Task ) в платформу .NET. К сожалению, IL2CPP (транспилятор, преобразующий C# в C++), поставляемый в Unity 2017.1.x, неправильно обрабатывает библиотеки DLL пересылки типов, что приводит к ошибкам сборки, подобным следующим:
В настоящее время не существует обходного пути для ошибок сборки .NET 4.x IL2CPP в Unity 2017.1, поэтому вам необходимо выполнить обновление до Unity 2017.2 или более поздней версии, чтобы использовать .NET 4.x в проектах, скомпилированных с помощью IL2CPP.
Сеть Unity 2017.2
Firebase Realtime Database создает сетевые соединения 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 .
Проблема с одним дексом при создании приложения для Android.
При создании приложения для Android вы можете столкнуться со сбоем сборки, связанным с наличием одного файла dex. Сообщение об ошибке выглядит примерно так, как показано ниже, если ваш проект настроен на использование системы сборки Gradle.
Cannotfitrequestedclassesinasingledexfile.
Исполняемые файлы Dalvik ( .dex ) используются для хранения набора определений классов и связанных с ними дополнительных данных для приложений Android ( .apk ). Один файл dex может содержать только 65 536 методов. Сборка завершится неудачей, если общее количество методов из всех библиотек Android в вашем проекте превысит этот предел.
Unity представила минификацию в 2017.2, которая использует Proguard (или другие инструменты в некоторых версиях Unity) для удаления неиспользуемого кода, что может уменьшить общее количество ссылочных методов в одном dex-файле. Эту опцию можно найти в «Настройки проигрывателя» > «Android» > «Настройки публикации» > «Свернуть» . Параметры могут отличаться в разных версиях Unity, поэтому обратитесь к официальной документации Unity.
Если количество ссылочных методов по-прежнему превышает лимит, другой вариант — включить multidex . В Unity есть несколько способов добиться этого:
Если в Player Settings включен Custom Gradle Template , измените mainTemplate.gradle .
Если вы используете Android Studio для сборки экспортированного проекта, измените файл build.gradle на уровне модуля.
Поддержка 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 и выше) вы можете увидеть следующую ошибку сборки:
Это изменение влияет только на сборки Android в Unity 2017 и Unity 2018. В более новых версиях Unity по умолчанию в файлы сборки Gradle добавляется блок compileOptions . Чтобы исправить эту ошибку сборки в Unity 2017 и Unity 2018, выполните одно из следующих действий:
Добавьте блок compileOptions в шаблон Gradle:
Используйте Gradle в качестве системы сборки.
Включите Custom Gradle Template в Player Settings .
Добавьте следующие строки в mainTemplate.gradle (или build.gradle уровня модуля при экспорте проекта для Android Studio):
При сборке для 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 2018.4+.
Используйте этот метод, чтобы упростить обновление будущих версий и очистить каталог Assets/ .
В вашем проекте Unity вам следует использовать только один метод импорта для управления всеми вашими пакетами Firebase. Приведенные ниже инструкции можно использовать не только для обновления версий отдельных пакетов, но и, при необходимости, для переноса управления пакетами в UPM (рекомендуемый метод импорта).
Пакеты, импортированные как файлы .unitypackage в каталог Assets/
Если пакеты Firebase находятся в каталоге Assets/ , у вас есть два варианта обновления версии SDK:
Вариант 1 (рекомендуется) : перейти на использование UPM (доступно в Unity 2018.4+).
Хотя этот метод требует больше начальной настройки, чем дальнейшее использование рабочего процесса .unitypackage , он окупается простотой последующих обновлений версий SDK.
Вариант 2. Продолжайте использовать файлы .unitypackage для их импорта в каталог Assets/
Если вы загружаете firebase_unity_sdk.zip с веб-сайта Firebase, убедитесь, что вы импортируете все .unitypackages из правильной папки dotnet .
Если вы используете Unity 2019 или более позднюю версию, импортируйте из папки dotnet4 .
В противном случае выберите «Версия среды выполнения сценариев» в настройках проигрывателя и, если для нее установлено значение «.NET 3.x», импортируйте из папки dotnet3 .
Перезапись ранее импортированных версий пакетов должна выполняться автоматически Диспетчером внешних зависимостей (который автоматически включается при импорте пакетов Firebase .unitypackages ).
Однако, если и ТОЛЬКО если этот автоматический процесс завершится неудачно, вам придется вручную удалить следующие папки, а затем повторить описанный выше шаг импорта еще раз.
На этой странице представлены советы и способы устранения проблем, связанных с Unity, с которыми вы можете столкнуться при использовании Firebase.
У вас есть другие проблемы или вы не видите свою проблему, описанную ниже? Обязательно ознакомьтесь с основными часто задаваемыми вопросами по Firebase, чтобы получить дополнительные часто задаваемые вопросы по Firebase или конкретному продукту.
Совместимость .NET при использовании Unity 2017.x и более поздних версий.
Firebase поддерживает .NET 4.x в качестве экспериментального варианта сборки в Unity 2017 и более поздних версиях. Плагины Firebase используют компоненты Parse SDK для предоставления некоторых классов .NET 4.x в более ранних версиях .NET.
Таким образом, FirebaseUnity SDK версии 5.4.0 и более поздних версий предоставляет плагины, совместимые с .NET 3.x или .NET 4.x, в каталогах dotnet3 и dotnet4FirebaseUnity SDK.
Если вы импортируете плагин Firebase, несовместимый с версией .NET, включенной в вашем проекте, вы увидите ошибки компиляции некоторых типов в .NET Framework, которые реализованы Parse SDK.
Чтобы устранить ошибку компиляции, если вы используете .NET 3.x:
Удалите или отключите следующие библиотеки DLL для всех платформ:
Parse/Plugins/dotNet45/Unity.Compat.dll
Parse/Plugins/dotNet45/Unity.Tasks.dll
Включите следующие библиотеки DLL для всех платформ:
Parse/Plugins/Unity.Compat.dll
Parse/Plugins/Unity.Tasks.dll
Чтобы устранить ошибку компиляции, если вы используете .NET 4.x:
Удалите или отключите следующие библиотеки DLL для всех платформ:
Parse/Plugins/Unity.Compat.dll
Parse/Plugins/Unity.Tasks.dll
Включите следующие библиотеки DLL для всех платформ:
Parse/Plugins/dotNet45/Unity.Compat.dll
Parse/Plugins/dotNet45/Unity.Tasks.dll
Если вы импортируете другой плагин Firebase:
В своем проекте Unity перейдите в «Активы» > «Play Services Resolver» > «Обработчик версий» > «Обновить» , чтобы включить правильные библиотеки DLL для вашего проекта.
Компиляция Unity 2017.1 IL2CPP в проектах .NET 4.x
Firebase поддерживает .NET 4.x в качестве экспериментального варианта сборки в Unity 2017 и более поздних версиях. Плагины Firebase используют компоненты Parse SDK для предоставления некоторых классов .NET 4.x в более ранних версиях .NET.
Таким образом, FirebaseUnity SDK версии 5.4.0 и более поздних версий предоставляет библиотеки DLL пересылки типов, которые перенаправляют типы Parse (например, реализацию Parse System.Threading.Tasks.Task ) в платформу .NET. К сожалению, IL2CPP (транспилятор, преобразующий C# в C++), поставляемый в Unity 2017.1.x, неправильно обрабатывает библиотеки DLL пересылки типов, что приводит к ошибкам сборки, подобным следующим:
В настоящее время не существует обходного пути для ошибок сборки .NET 4.x IL2CPP в Unity 2017.1, поэтому вам необходимо выполнить обновление до Unity 2017.2 или более поздней версии, чтобы использовать .NET 4.x в проектах, скомпилированных с помощью IL2CPP.
Сеть Unity 2017.2
Firebase Realtime Database создает сетевые соединения 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 .
Проблема с одним дексом при создании приложения для Android.
При создании приложения для Android вы можете столкнуться со сбоем сборки, связанным с наличием одного файла dex. Сообщение об ошибке выглядит примерно так, как показано ниже, если ваш проект настроен на использование системы сборки Gradle.
Cannotfitrequestedclassesinasingledexfile.
Исполняемые файлы Dalvik ( .dex ) используются для хранения набора определений классов и связанных с ними дополнительных данных для приложений Android ( .apk ). Один файл dex может содержать только 65 536 методов. Сборка завершится неудачно, если общее количество методов из всех библиотек Android в вашем проекте превысит этот предел.
Unity представила Minification в 2017 году .2, в котором используется прогиар (или другие инструменты в некоторых версиях Unity), чтобы лишить неиспользованный код, который может уменьшить общее количество ссылочных методов в одном файле DEX. Вариант можно найти в настройках игрока> Android> Публикация настройки> Minify . Варианты могут отличаться в разных версиях Unity, поэтому обратитесь к официальной документации Unity.
Если количество ссылочных методов все еще превышает предел, другой вариант - включить multidex . Есть несколько способов достичь этого в единстве:
Если Custom Gradle Template в Player Settings включен, измените mainTemplate.gradle .
Если вы используете Android Studio для создания экспортируемого проекта, измените файл на уровне модуля build.gradle .
Java 8 Поддержка и отсуга для Android Builds в 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 и выше), вы можете увидеть следующую ошибку сборки:
Это изменение влияет на сборку Android только в Unity 2017 и Unity 2018. Новые версии Unity Добавьте блок compileOptions по умолчанию в файлах сборки Gradle. Чтобы исправить эту ошибку сборки в Unity 2017 и Unity 2018, сделайте одно из следующих действий:
Добавьте блок compileOptions в свой шаблон Gradle:
Используйте Gradle в качестве системы сборки.
Включить Custom Gradle Template в Player Settings .
Добавьте следующие строки в mainTemplate.gradle (или модульный уровень build.gradle , если экспорт проекта для Android Studio):
При строительстве для iOS установка Cocoapod может потерпеть неудачу с ошибкой в отношении языковой локали или кодирования UTF-8. В настоящее время есть несколько разных способов обойти проблему.
Из терминала запустите pod install напрямую и откройте полученный файл XCWorkspace.
Понизить версию кокопод до 1.10.2. Проблема существует только в версии 1.11 и более новой.
В вашем ~/.bash_profile или эквивалентно добавить export LANG=en_US.UTF-8
Как обновить версию SDK Firebase Unity SDK
Процесс обновления версий SDKS Unity Firebase зависит от того, как они были первоначально импортированы. Вот два альтернативных метода импорта:
Импорт файлов .unitypackage в рамках Assets/ каталога вашего проекта
Это рекомендуемый способ управления пакетами в Unity 2018.4+.
Используйте этот метод, чтобы упростить обновления будущих версий и ваши Assets/ очиститель каталогов.
В вашем проекте Unity вы должны использовать только один метод импорта для управления всеми вашими пакетами Firebase. Приведенные ниже инструкции можно использовать не только для обновления версии отдельных пакетов, но и, при необходимости, для переноса управления пакетами в UPM (рекомендуемый метод импорта).
Пакеты, импортируемые в качестве файлов .unitypackage в Assets/ каталог
Если пакеты Firebase находятся в каталоге Assets/ у вас есть два варианта обновления версии SDK:
Вариант 1 (рекомендуется) : мигрируйте на использование UPM (доступно в Unity 2018.4+)
Хотя этот метод требует большей начальной настройки, чем продолжение использования рабочего процесса .unitypackage , он окупается в простоте последующих обновлений версии SDK.
Вариант 2 : Продолжайте использовать файлы .unitypackage , чтобы импортировать их в Assets/ каталог
Если вы загружаете firebase_unity_sdk.zip с веб -сайта Firebase, убедитесь, что вы импортируете все .unitypackages из правильной папки dotnet .
Если вы используете Unity 2019 или позже, импорт из папки dotnet4 .
В противном случае выберите версию времени выполнения сценариев в настройках игрока , и если она установлена на «.net 3.x», импорт из папки dotnet3 .
Перезапись ранее импортируемых версий пакета должен автоматически обрабатывать внешний диспетчер зависимостей (который автоматически включается при импорте Firebase .unitypackages ).
Однако, если и только если этот автоматический процесс не пройдет, вам необходимо вручную удалить следующие папки, а затем снова попробовать приведенный выше шаг импорта.