Proguard удаляет весь неиспользуемый код подключенных библиотек, а также классы и методы, которые используются через
Reflection.
Если для своего приложения разработчик может написать Proguard-правила, сохраняющие такие классы, то для библиотеки это возможно сделать, только исследовав ее исходный код. Это довольно сложная задача, поэтому создание правил ложится на разработчиков библиотек.
Если библиотека распространяется в формате
jar, то разработчики часто документируют Proguard-правила. Пользователям библиотеки достаточно скопировать их в конфигурационный файл своего проекта.
Если же библиотека поставляется в формате
aar, то разработчики библиотеки могут запаковать Proguard-правила в aar-пакет.
Для этого в gradle-файле библиотеки используется проперти
consumerProguardFiles, которая принимает файл с правилами Proguard.
В этом случае пользователям библиотеки не надо ничего делать. При сборке приложения Gradle автоматически проверяет все aar-библиотеки на наличие consumer proguard файлов и мержит их с конфигурационным файлом проекта.