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

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

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

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

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

Cannot fit requested classes in a single dex file.

Исполняемые файлы Dalvik (.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, на этапе преобразования в DEX-файл может произойти сбой, обычно в задаче 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 и более новых.

  • В ~/.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 (рекомендуемый способ импорта).