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

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

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

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

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

Cannot fit requested classes in a single dex file.

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

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

Если количество ссылочных методов все еще превышает лимит, другой вариант — включить multidex . В Unity есть несколько способов добиться этого:

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

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

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

При сборке для Android, если вы ориентируетесь на minSdkVersion 23, может произойти сбой на этапе dexing, обычно в задаче Gradle ':launcher:mergeExtDexDebug', где будет написано "Failed to transform" (Не удалось преобразовать) одну из библиотек 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

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

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

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

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