Удалите все неиспользуемые классы, методы из проекта Android Studio

Я использовал ворс (Analyze-> Проверка кода...) и обнаружил неиспользуемые методы и ресурсы. Все неиспользуемые ресурсы удалены с помощью Refractor-> Удалить неиспользуемые ресурсы, но не найдено ни одной опции, подобной этой, для удаления классов и методов Java. Есть ли какая-либо функция в андроид студии или любой плагин, который может удалить все классы Java, методы, которые не используются в коде для сохранения рефракции вручную?

Ответ 1

Это может быть достигнуто с помощью встроенной инспекции Java | Declaration redundancy | Unused declaration Java | Declaration redundancy | Unused declaration Java | Declaration redundancy | Unused declaration.

Чтобы запустить его для всего проекта, зайдите в Analyze → Run inspection by name..., введите Unused declaration и выберите желаемую область. Затем внимательно проверьте вывод и отметьте некоторые классы как точки входа, если это необходимо.

Теперь вы можете выбрать узел Unused declaration в списке и выполнить действие Safe delete для всех неиспользованных объявлений.

Inspection result

Для Kotlin есть аналогичное обследование Kotlin | Redundant constructs | Unused symbol Kotlin | Redundant constructs | Unused symbol Kotlin | Redundant constructs | Unused symbol

Ответ 2

Android поставляется с ProGuard и может делать то, что вы хотите. Если вы используете Gradle в качестве системы сборки, вы можете добавить следующие строки в свой build.gradle файл:

android {

    // ... other configurations

    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt')
            signingConfig signingConfigs.release
        }
        debug {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'),
                'proguard-rules-debug.pro'
        }
    }
}

В вашем файле proguard-rules-debug.pro должна содержаться только одна строка

-dontobfuscate

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

Часто задаваемые вопросы ProGuard содержит дополнительную информацию о том, что он может сделать.