Устранение неполадок и усиление; Часто задаваемые вопросы по 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, может произойти сбой на этапе преобразования (dexing), обычно в задаче 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

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

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

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

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

Если пакеты Firebase находятся в каталоге Assets/ , у вас есть два варианта обновления версии SDK:

  • Вариант 1 (рекомендуется) : переход на использование UPM (доступно в Unity 2018.4+)

  • Вариант 2 : продолжить использование файлов .unitypackage для их импорта в каталог Assets/

    1. Импортируйте каждый из пакетов для обновленной версии.

      Если вы загружаете firebase_unity_sdk.zip с сайта Firebase, убедитесь, что вы импортируете все .unitypackages из правильной папки dotnet .

      • Если вы используете Unity 2019 или более позднюю версию, импортируйте из папки dotnet4 .
      • В противном случае выберите версию среды выполнения скриптов в настройках проигрывателя , и если установлено значение «.NET 3.x», выполните импорт из папки dotnet3 .
    2. Перезапись ранее импортированных версий пакетов должна автоматически обрабатываться менеджером внешних зависимостей (который автоматически включается при импорте пакета Firebase .unitypackages ).

      Однако, если и ТОЛЬКО если этот автоматический процесс завершится неудачей, вам придется вручную удалить следующие папки, а затем повторить описанный выше шаг импорта еще раз.

      • Assets/Editor Default Resources/Firebase
      • Assets/ExternalDependencyManager
      • Assets/Firebase
      • Assets/Parse
      • Assets/Plugins/iOS/Firebase

Если пакеты Firebase управляются UPM, импортируйте новую версию SDK как файл .tgz . Этот импорт автоматически перезапишет предыдущую версию.