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

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

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

Проблема с одним файлом DEX при сборке приложения для Android

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

Cannot fit requested classes in a single dex file.

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

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

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

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

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

Проблемы при сборке для Android с minSdkVersion 23

Если вы разрабатываете приложение для Android и используете minSdkVersion 23, то на этапе dexing может возникнуть ошибка. Обычно она появляется в задаче Gradle ":launcher:mergeExtDexDebug" и указывает на то, что не удалось преобразовать одну из библиотек Android. Это связано с ошибкой в стандартном инструменте dex в Android SDK, который используется в большинстве редакторов Unity. Проблему можно решить несколькими способами:

  • Задайте для свойства minSdkVersion значение 24.
  • Включите минификацию Android в разделе Player Settings (Настройки проигрывателя) > Android > Publishing Settings (Настройки публикации) > Minify (Минификация).
  • Укажите другую версию инструмента 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 и более поздних.

  • Добавьте export LANG=en_US.UTF-8 в ~/.bash_profile или эквивалентный файл.

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

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

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

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