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

На этой странице представлены советы и рекомендации по устранению неполадок, специфичных для 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 (рекомендуемый метод импорта).