Подтвердить что ты не робот

Проверьте, используется ли библиотека в приложении Android.

Я получил некоторый унаследованный код приложения (не разработанный мной, но какой-либо другой командой без документации), который имеет почти 20 + зависимостей, в build.gradle.

Теперь я хотел очистить неиспользуемые библиотеки/зависимости, удалив их из build.gradle

Я искал в Google и наткнулся на этот проект для сокращения ресурсов. Но, похоже, он используется для удаления ресурсов, которые не используются во время сборки, в упакованном приложении, и это также удаляет ресурсы из библиотек, которые вы в зависимости от того, действительно ли они необходимы вашему приложению.

Кроме того, я использую ProGuard для обфускации и сжатия в сочетании с shrinkResources true в build.gradle

Я намерен удалить неиспользуемые библиотеки/зависимости из build.gradle самостоятельно, не нарушая при этом функциональность приложения.

Есть ли способ или инструмент, который показывает, какая библиотека безопасна для удаления без нарушения функциональности приложения?

4b9b3361

Ответ 1

В зависимости от 20+ вам не нужны никакие инструменты, и вы можете выполнить ручную проверку.

Я бы поступил так:

  1. Закомментируйте все зависимости и проверьте, что не работает (см. Ниже)
  2. Раскомментируйте зависимость, которая вызывает сбой
  3. Повторение

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

Вот вещи, которые укажут вам, что требуется зависимость (в порядке замедления цикла обратной связи):

  • ошибки компиляции
  • ошибки модульного теста
  • ошибки интеграции/системы/сквозного тестирования/устройства (все, что вы используете и как их называть)
  • функциональность приложения во время выполнения
  • производительность приложения во время выполнения

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

Ответ 2

Я считаю, что вам нужен этот проект библиотеки. https://github.com/NullStress/gradle-dependency-analysis-plugin

Он сканирует проект на поиск неиспользуемых зависимостей и дает ошибку, если есть неиспользуемая зависимость.

Вы можете проверить это на gradle analyze

Ответ 3

Вместо того, чтобы комментировать все зависимости, я бы пошел другим путем - закомментируйте одну зависимость за раз и посмотрите, что ломается. Таким образом, вы также получите представление о вариантах использования всех зависимостей, потому что среда IDE укажет вам место, где произошел сбой кода. Если после комментирования зависимости ничего не сломается, вы будете знать, что она не используется. Еще одна вещь, которую вы потенциально можете сделать, - это проанализировать необъявленный выпуск .apk, в котором все неиспользуемые зависимости будут отсутствовать, но структура пакета будет сохранена.