Disk Usage

Описание DiskUsageConfiguration

DiskUsageConfiguration – плагин, предназначенный для мониторинга использования дискового пространства вашим приложением. Он позволяет отслеживать, какие проекты или сборки занимают больше всего места на диске, что может быть полезно для управления ресурсами и оптимизации использования хранилища. С помощью этого плагина возможно отслеживать утекающие или забытые файлы и вовремя их удалять. Полезно, чтобы пользователь не удалял ваше приложение, когда на его устройстве закончится место :)

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

Все файлы распределены по 3-ем GlobalDirs, которые по умолчанию имеют значения:

ДиректорияОписание
int_dataВнутренние данные приложения: кэши, временные файлы, логи и другие. Это корневая папка приложения, в которой хранятся такие папки, как files, caсhe, shared_prefs и другие файлы, относящиеся к работе приложения.
ext_dataДанные, предназначенные для обмена с внешними системами или пользователями: загружаемые файлы, выгрузки, обменные файлы и другие. Здесь можно найти файлы временных кэшей, журналы, временные файлы сеансов и т. д.
src_dataИсходные кода приложения: исходные коды программ, скрипты, конфигурации и другие ресурсы.

Таким образом, плагин помогает контролировать и предотвращать излишнее использование ресурсов. В случае, если занимаемый объем памяти превышает определённый показательinterestingSizeBytes, плагин генерирует и отправляет отчёт в Tracer. Сгенерированный отчёт можно найти в разделе «Использование диска», выбрав нужную дату. В самом отчёте содержится основная информация о приложении, данные об устройстве, на котором было запущено приложение, а также сводка по проанализированным файлам приложения и занимаемому ими пространству.

Информация обо всех утечках файлов агрегируется в отдельный отчёт по версии используемого приложения. Найти эти отчёты можно в верхней панели в разделе «Использование диска»:

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

Подключение зависимостей к проекту

Перед началом использования плагина в вашем проекте, необходимо подключить зависимости:

В вашем <project>/<app-module>/build.gradle.kts

dependencies { implementation(platform("ru.ok.tracer:tracer-platform:0.5.1")) implementation("ru.ok.tracer:tracer-disk-usage") }

Более подробное описание зависимостей можно найти на странице Быстрый старт

После подключения необходимых зависимостей нужно установить плагин в конфигурацию Tracer:

В вашем Application.kt

class MyApplication : Application(), HasTracerConfiguration { override val tracerConfiguration: List<TracerConfiguration> get() = listOf( DiskUsageConfiguration.build { // ваши опции }, ) }

Конфигурация DiskUsage

В конфигурации DiskUsage есть несколько параметров, которые позволяют настраивать работу плагина. Опции DiskUsageConfiguration.Builder, с помощью который можно их регулировать:

ОпцияОписание
setEnabledОтвечает за включение/выключение плагина. По умолчанию плагин включён.
setProbabilityВероятность того, что раз в день в фоновом режиме будет произведена проверка использования дискового пространства. По умолчанию имеет значение 0, что равноценно включению плагина. Можно задать собственное значение n – тогда вероятность будет вычисляться как 1/n. При этом отрицательное значение будет равноценно выключению плагина.
setInterestingSizeУстанавливает пороговое значение занимаемого вашим проектом места на диске. При превышении этого значения SDK будет сигнализировать о проблеме и отправлять отчёт в Tracer. Измеряется в байтах. По умолчанию имеет значение 10Gb.
setExcludePathОтвечает за добавление путей к заранее известным большим файлам, которые должны быть исключены из проверки использования дискового пространства. Принимает только пути, сформированные через GlobalDirs.

ВАЖНО! Указывать путь необходимо от корневой папки приложения. Например:

  • GlobalDirs.INTERNAL_DATA.excludePath("foo/bar") – внутреннее хранилище приложения;
  • GlobalDirs.EXTERNAL_DATA.excludePath("foo/bar") – файлы приложения на SD-карте;
  • GlobalDirs.SRC.excludePath("foo/bar") – файлы самого приложения;

Чтобы проверить, что плагин подключён верно и действительно обрабатывает данные, включите дебажную загрузку данных (подробнее читайте в описании CoreTracerConfiguration), установите для плагина DiskUsage в качестве параметра probability 1, задайте минимальный порог занимаемой на диске памяти и запустите приложение – свежий отчёт об использовании диска появится в соответствующем разделе.

В вашем Application.kt

class MyApplication : Application(), HasTracerConfiguration { override val tracerConfiguration: List<TracerConfiguration> get() = listOf( DiskUsageConfiguration.build { setEnabled(true) setProbability(1) setInterestingSize(1) }, ) }