Найти в Дзене
appsLaba

Unity отключение Debug логов в релизной сборке.

Первая статья, она самая сложная. Постараюсь поменьше “лить воды” и придерживаться формата:
1. Введение.
2. Задача.
3. Решение. ВодаВведение:
Во время разработки, рано или поздно, сталкиваешься с необходимостью провести отладку приложения, отловить баги и пофиксить их. Или отследить работу метода/модуля/плагина и т.д. В Unity с отладкой нам помогает класс Debug - иными словами, мы можем вести журнал логирования, записывать в журнал необходимые нам события или значения и выводить их в консоль. На этом можно было бы и закончить, но есть несколько “но”! Первое - записи в журнале занимают место в оперативной памяти, в случае с мобильным устройствами - драгоценное место! Что может сказаться на общей производительности приложения в худшую сторону. Второе - в логах мы можем отслеживать и выводить важную информацию. К примеру, ID пользователя или процесс начисления вознаграждения пользователю. Это, к слову, ценная информация для нечестных юзеров, приложение могут просто взломать. Можно, ко
Первая статья, она самая сложная.

Постараюсь поменьше “лить воды” и придерживаться формата:
1. Введение.
2. Задача.
3. Решение.

ВодаВведение:
Во время разработки, рано или поздно, сталкиваешься с необходимостью провести отладку приложения, отловить баги и пофиксить их. Или отследить работу метода/модуля/плагина и т.д.

В Unity с отладкой нам помогает класс Debug - иными словами, мы можем вести журнал логирования, записывать в журнал необходимые нам события или значения и выводить их в консоль.

Вывод лога в консоль Unity
Вывод лога в консоль Unity

На этом можно было бы и закончить, но есть несколько “но”!

Первое - записи в журнале занимают место в оперативной памяти, в случае с мобильным устройствами - драгоценное место! Что может сказаться на общей производительности приложения в худшую сторону.

Второе - в логах мы можем отслеживать и выводить важную информацию. К примеру, ID пользователя или процесс начисления вознаграждения пользователю. Это, к слову, ценная информация для нечестных юзеров, приложение могут просто взломать.

Можно, конечно же, чистить код перед релизной сборкой или закомментировать строки с логами, но я предлагаю поступить иначе.

Задача:
Вести журнал логирования на протяжении всего цикла разработки и не думать о последствиях.
Отключать журнал логирования в релизных сборках проекта.

Решение:
Рассмотрим два способа которые я использую на практике.

Способ № 1 — радикальный.
Выключаем/включаем логи в зависимости от платформы.

Объявляем поле типа bool:
private bool debugOn = true;

Пишем метод где проверяем платформу и включаем/выключаем логи:


Вызываем метод
DebuggerSetup при запуске нашего приложения:

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

Весь скрипт:

Способ № 2 — гибкий.
Выключаем/включаем логи в зависимости от типа сборки.

Опишем метод активации журнала логирования в случае, если тип сборки установлен как Debug:

Как и в первом примере, вызываем наш метод при запуске приложения:

Указываем тип сборки Debug:
Переходим в
Player Settings → Player → Publishing Settings и активируем Debug

Активация типа сборки
Активация типа сборки

Весь скрипт:

Теперь журнал логирования будет вестись только в Debug сборках и Unity Editor.

Вот так, всего в несколько строк, можно оптимизировать процесс разработки.
Еще хотелось бы добавить, что на просторах RU интернета, крайне редко встречается упоминание этой маленькой, но очень важной детали. Собственно, это и сподвигло меня на написание статьи.
Надеюсь, информация будет для вас полезна. Спасибо за внимание.