На этой странице представлены советы и рекомендации по устранению неполадок, специфичных для Unity, которые могут возникнуть при использовании Firebase.
Возникли другие проблемы или вы не нашли ответа на свой вопрос ниже? Обязательно ознакомьтесь с основным разделом часто задаваемых вопросов Firebase, где вы найдете больше вопросов, касающихся Firebase в целом или конкретного продукта.
Проблема с использованием одного dex-файла при сборке Android-приложения.
При сборке Android-приложения может возникнуть ошибка сборки, связанная с наличием единственного dex-файла. Если ваш проект настроен на использование системы сборки Gradle, сообщение об ошибке будет выглядеть примерно так.
Cannot fit requested classes in a single dex file.
Исполняемые файлы 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на уровне модуля.
Более подробную информацию можно найти в руководстве пользователя Multidex .
Проблемы при сборке для Android с minSdkVersion 23
При сборке для Android, если вы ориентируетесь на minSdkVersion 23, может произойти сбой на этапе dex-кодирования, обычно в задаче Gradle ':launcher:mergeExtDexDebug', где будет указано «Не удалось преобразовать» одну из библиотек Android. Это происходит из-за ошибки в стандартном инструменте dex в Android SDK, который используется большинством редакторов Unity, и может быть исправлено несколькими способами:
- Установите значение
minSdkVersionравным 24. - Включите минификацию Android в настройках плеера: Настройки > Android > Настройки публикации > Минификация.
- Чтобы указать другую версию инструмента dex, добавьте следующий код в файл
settingsTemplate.gradle:
buildscript {
repositories {
mavenLocal()
maven { url 'https://maven.google.com' }
mavenCentral()
}
dependencies {
classpath 'com.android.tools:r8:8.3.37'
}
}
Проблемы при сборке под iOS с использованием Cocoapods.
При сборке под iOS установка Cocoapod может завершиться ошибкой, связанной с языковыми настройками или кодировкой UTF-8. В настоящее время существует несколько способов обойти эту проблему.
В терминале выполните команду
pod installи откройте полученный файл `xcworkspace`.Понизьте версию Cocoapods до 1.10.2. Проблема существует только в версии 1.11 и более новых.
В файл
~/.bash_profileили аналогичный добавьтеexport LANG=en_US.UTF-8
Как обновить версию SDK Firebase Unity
Процесс обновления версий SDK Firebase Unity зависит от способа их первоначального импорта. Вот два альтернативных метода импорта:
- Импорт файлов
.unitypackageиз каталогаAssets/вашего проекта. - Импорт с помощью менеджера пакетов Unity (UPM)
- Это рекомендуемый способ управления пакетами в Unity 2018.4 и более поздних версиях.
- Используйте этот метод, чтобы упростить будущие обновления версий и очистить каталог
Assets/.
В вашем проекте Unity следует использовать только один метод импорта для управления всеми пакетами Firebase. Приведенные ниже инструкции можно использовать не только для обновления версий отдельных пакетов, но и, при необходимости, для миграции системы управления пакетами на UPM (рекомендуемый метод импорта).
Если пакеты Firebase находятся в каталоге Assets/ , у вас есть два варианта обновления версии SDK:
Вариант 1 (рекомендуемый) : Переход на использование UPM (доступен в Unity 2018.4+).
- Следуйте инструкциям Firebase для миграции системы управления пакетами на UPM .
- Хотя этот метод требует большей первоначальной настройки, чем продолжение использования рабочего процесса с файлами
.unitypackage, он окупается простотой последующих обновлений версий SDK.
Вариант 2 : Продолжайте использовать файлы
.unitypackageдля импорта их в каталогAssets/Импортируйте каждый из пакетов для обновленной версии.
Если вы скачали firebase_unity_sdk.zip с веб-сайта Firebase, убедитесь, что вы импортировали все
.unitypackagesиз правильной папкиdotnet.- Если вы используете Unity 2019 или более позднюю версию, импортируйте файлы из папки
dotnet4. - В противном случае выберите «Версия среды выполнения скриптов» в настройках проигрывателя , и если она установлена на «.NET 3.x», импортируйте из папки
dotnet3.
- Если вы используете Unity 2019 или более позднюю версию, импортируйте файлы из папки
Перезапись ранее импортированных версий пакетов должна обрабатываться автоматически менеджером внешних зависимостей (который автоматически включается при импорте Firebase
.unitypackages).Однако, только если этот автоматический процесс завершится неудачей, вам потребуется вручную удалить следующие папки, а затем повторить описанный выше шаг импорта.
-
Assets/Editor Default Resources/Firebase -
Assets/ExternalDependencyManager -
Assets/Firebase -
Assets/Parse -
Assets/Plugins/iOS/Firebase
-
Если пакеты Firebase управляются UPM, импортируйте более новую версию SDK в виде файла .tgz . Этот импорт автоматически перезапишет предыдущую версию.