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

Если для своего приложения разработчик может написать Proguard-правила, сохраняющие такие классы, то для библиотеки это возможно сделать, только исследовав ее исходный код. Это довольно сложная задача, поэтому создание правил ложится на разработчиков библиотек.

Если библиотека распространяется в формате jar, то разработчики часто документируют Proguard-правила. Пользователям библиотеки достаточно скопировать их в конфигурационный файл своего проекта.

Если же библиотека поставляется в формате aar, то разработчики библиотеки могут запаковать Proguard-правила в aar-пакет.

Для этого в gradle-файле библиотеки используется проперти consumerProguardFiles, которая принимает файл с правилами Proguard.

В этом случае пользователям библиотеки не надо ничего делать. При сборке приложения Gradle автоматически проверяет все aar-библиотеки на наличие consumer proguard файлов и мержит их с конфигурационным файлом проекта.