Unity 6.3
0 онлайн 53 гостей 3 в системе
Вход

Символы Android

Чтобы помочь вам отладывать ваше приложение, Unity может генерировать пакет, содержащий символьные файлы с отладочными метаданными для нативного Unity Файлы символов содержат раздел исполняемого файла под названием таблица символов (.symtab), который переводит адреса активной памяти в информацию, которую вы можете использовать, например, в имя метода. Процесс перевода называется символизацией. Вы можете загрузить пакет символов в Google Play Консоль для просмотра легкочитаемого трассировки стек на Android Жизненные функции приборная панель.

Более подробную информацию о разделе исполняемых файлов (ELF) см. в Wikipedia.

Unity генерирует символьные файлы для следующих библиотек:

  • libmain: Отвечает за логику загрузки двигателя Unity. Файл символов предварительно скомпилирован.

  • libunity: код двигателя Unity:

    • Если свойство Код полосы двигателя отключено, файл символов предварительно компилируется.
    • Если свойство Код полосы двигателя включено, Unity компилирует файл символов во время процесса сборки.
  • libil2cpp: Содержит скрипты C#:

    • Если вы не экспортируете свой проект, Unity компилирует файл символов во время процесса сборки.
    • Если вы экспортируете проект, Gradle компилирует файл символов.

Gradle создает символьные файлы для любых дополнительных общих библиотек, удаляя секции исполняемых файлов .symtab и .debug* из общих библиотек. Если общая библиотека не содержит этих секций, Gradle не создаст символьный файл для нее.

В зависимости от формата сборки приложения, Unity генерирует символьные файлы двумя способами:

  • В виде zip-файла, который может быть создан как для apk, так и для aab.
  • Непосредственно встраивает файлы символов в aab. Unity не встраивает файлы символов в apk.

Используйте UserBuildSettings.DebugSymbols.format API для установки формата пакета символов.

Типы символьных файлов

Unity использует свойство Gradle debugSymbolLevel для создания символьных файлов. Существует два типа символьных файлов:

  • Public: Небольшой файл, содержащий раздел таблицы символов. Дополнительные сведения см. в Государственные символы.
  • Debugging: содержит всё то же, что и файл открытых символов, плюс полную отладочную информацию для более глубокой отладки. Дополнительные сведения см. в Символы отладки.

Используйте UserBuildSettings.DebugSymbols.level для создания требуемого типа символьного файла.

Примечание: По умолчанию Gradle создает символьные файлы с расширениями .so.sym или .so.dbg. Некоторые службы цифрового распространения не распознавают эти расширения и требуют файлы с расширением .so. В таких случаях используйте Unity.Android.Types.DebugSymbolFormat.LegacyExtensions API для создания символьных файлов с расширением .so.

UserBuildSettings.DebugSymbols.format = DebugSymbolFormat.IncludeInBundle | DebugSymbolFormat.Zip | DebugSymbolFormat.LegacyExtensions;

Государственные символы

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

Символы отладки

Файл символов отладки содержит полную информацию об отладке и раздел таблицы символов. Используйте его для:

  • Разрешение трассировки стеков и отладка приложений, для которых доступен исходный код.
  • Присоедините к приложению отладчик и отладите код.

Примечание: Если символы отладки недоступны, Unity помещает public symbols файл в вашем проекте во время сборки. Для libmain и libunity библиотек отладочные символы недоступны, и Unity всегда формирует файлы с открытыми символами.

Пользовательские символы

Вы можете дать указание Unity включить дополнительные символьные файлы. Это полезно, если вы используете общие библиотеки и хотите, чтобы ваш локальный отладчик, а Google Play, чтобы разрешить следы стека общих библиотек в случае сбоя приложения.

Чтобы Unity включал в себя файл символов:

  1. В окне Project выберите плагин с расширением файла .so.
  2. В Inspector найдите раздел Настройки платформы.
  3. Установите CPU на архитектуру CPU, с которой совместим файл символов.
  4. Установите Тип Общей Библиотеки на Символ.

Каждый раз, когда Unity генерирует пакет символов, он добавляет дополнительные файлы символов в пакет символов.

Важно: Если тип общей библиотеки Тип установлен на Исполняемый, а общая библиотека содержит разделы исполняемых файлов .symtab и .debug*, Gradle создает файл символов, который перезаписывает пользовательский файл символов.

Если вы хотите сделать Unity включить файл пользовательских символов из C# скрипт, UnityEditor.Android пространство имен включает следующее APIs для установки CPU и Тип общей библиотеки соответственно:

Примечание: Имя файла символов должно соответствовать имени общей библиотеки, для которой предназначен файл символов. Например, если общая библиотека называется mylibrary.so, то файл символов также должен называться mylibrary.so. Чтобы избежать конфликтов имен файлов, файл символов и общая библиотека должны находиться в разных каталогах.

Важно: Убедитесь, что файл символов обновлен и совместим с общей библиотекой, содержащей исполняемый код. В противном случае ваш локальный отладчик и Google Play не смогут разрешить следы стека для кода в общей библиотеке.

Пользовательские плагины в Inspector.
Пользовательские плагины в Inspector.

Создание пакета символов

Существует два способа включить генерацию пакетов символов для вашего приложения:

Чтобы включить генерацию пакетов символов через окно Создание профилей:

  1. Откройте Создание профилей окно (меню: Файл > Создание профилей).

  2. Из списка платформ в панели Платформы выберите Android или создать профиль сборки для платформы Android.

  3. Установите для Символы отладки одно из следующих значений:

  4. Установить Символы выходные параметры до .zip.

После того, как вы включите генерацию пакетов символов, сборка вашего проекта генерирует .zip файл, содержащий символьные файлы для libmain и libunity библиотеки. Если вы установите скриптирование backend до IL2CPP, .zip также содержит символьный файл для libil2cpp библиотека. Unity помещает этот пакет символов в каталог вывода. Имя файла пакета символов имеет следующий формат: <appbuildfilename>-<version>-v<bundle version code>-IL2CPP.symbols.zipНапример, MyApp-0.1-v100-IL2CPP.symbols.zip где MyApp имя файла сборки приложения, 0.1 версия, и 100 это код версии пакета. Версия и код версий пакета устанавливаются в Android Настройки плеера.

Если вы включили Export Project в настройках сборки Android, Unity не будет компилировать проект. Вместо этого он экспортирует проект для Android Studio, создает символы для libmain и libunityи помещает их в unityLibrary/symbols/<architecture>/ в каталоге выходных данных. При сборке экспортированного проекта из Android Studio Gradle создает файл символов libil2cpp и помещает его в каталог unityLibrary/symbols/<architecture>/ вместе с файлами символов libmain и libunity.

Использование символов в консоли Google Play

Встроенные символы

Если вы создаете Android App bundle (aab), вы можете встроить символы непосредственно в aab и загрузить его в Google Play.

Примечание: Unity не встраивает символы в apk. В этом случае вы должны загрузить zip-файл с символами отдельно.

UserBuildSettings.DebugSymbols.level = DebugSymbolLevel.SymbolTable;
UserBuildSettings.DebugSymbols.format = DebugSymbolFormat.IncludeInBundle;

Символы Zip

Чтобы создать пакет символов в zip-формате, используйте следующий код:

UserBuildSettings.DebugSymbols.level = DebugSymbolLevel.SymbolTable;
UserBuildSettings.DebugSymbols.format = DebugSymbolFormat.Zip | DebugSymbolFormat.LegacyExtensions;

После того, как вы загрузите заявку на Google Play, вы можете загрузить public symbols zip пакет. Информацию о том, как это сделать, см. в документации Google: Разоблачение или символизация следов стеков аварий.

Примечание: Google Play не символизирует сбои, которые произошли в приложении до загрузки пакета символов.