Во время релизных сборок происходит больше оптимизаций, кроме ProGuard и R8. Согласно документации https://developer.android.com/studio/build/shrink-code.html
При сборке проекта с использованием Android Gradle plugin 3.4.0 или выше , плагин больше не использует ProGuard для оптимизации кода во время компиляции. Вместо этого плагин работает с компилятором R8 для обработки следующих задач во время компиляции:
Сокращение кода (или расшатывание дерева): обнаруживает и безопасно удаляет неиспользуемые классы, поля , методы и атрибуты из вашего приложения и его библиотечных зависимостей (что делает его ценным инструментом для обхода ограничения в 64 КБ). Например, если вы используете только несколько API-интерфейсов библиотечной зависимости, сжатие может идентифицировать библиотечный код, который не используется вашим приложением, и удалить только этот код из вашего приложения. Чтобы узнать больше, go к разделу о том, как уменьшить ваш код.
Сокращение ресурсов: удаляет неиспользуемые ресурсы из вашего упакованного приложения, включая неиспользуемые ресурсы в зависимостях библиотеки вашего приложения. Он работает в сочетании с сокращением кода таким образом, что после удаления неиспользуемого кода любые ресурсы, на которые больше нет ссылок, также можно безопасно удалить. Чтобы узнать больше, go к разделу о том, как уменьшить ваши ресурсы.
Запутывание: сокращает имена классов и членов, что приводит к уменьшению размеров файлов DEX. Чтобы узнать больше, go к разделу о том, как запутать ваш код.
Оптимизация: проверяет и переписывает ваш код, чтобы еще больше уменьшить размер DEX-файлов вашего приложения. Например, если R8 обнаруживает, что ветвь else {} для данного оператора if / else никогда не берется, R8 удаляет код для ветки else {}. Чтобы узнать больше, go к разделу об оптимизации кода.