Узнала тут очень интересную штуку про оптимизацию (можете сами догадаться где). Представьте, что мы сделали крутое приложение, где используем картинки в виде векторов. В них куча плюсов, вот только поддерживаются они с версии 21 апи (Android 5.0). А если у вас minSdk = 19 (Android 4.4), то там векторов нет. Однако, если вы просто запустите проект, то все заработает. Почему так?
Gradle при сборке сгенерируют кучу пнг из векторов, чтобы использовать их на устройствах, где апи меньше 21 версии. Звучит вроде не так и страшно, но это всё ведет к увеличению размера приложения, более долгой загрузке, у пользователя приложение станет занимать больше места. В результате велик риск, что пользователь просто удалит приложение, раз оно занимает кучу места. Или отменит загрузку, если ее долго ждать. А потом еще и отзыв напишет негативный. Ну потому что может.
Хорошие новости: в androidX как раз есть обратная совместимость прям до апи 7 (Android 2.1).
Для поддержки нужно всего три пункта (звучит как в рекламных заголовках какого-то спама):
Сначала заходим в build.gradle для нашего модуля, где лежат картинки и прописываем vectorDrawables.useSupportLibrary = true.
Потом заходим в layout, где используем картинку и вместо android:src пишем app:srcCompat. Вот он как раз использует androidX.
Скорее всего подсветится красным. Нажмите alt+enter и зависимость подтянется. Если нет, то в корневой layout надо вставить xmlns:app="http://schemas.android.com/apk/res-auto. Это вот там, где у вас уже написано xmlns:android.
app — для штук, которые пришли из нашего кода или библиотек, а не из Android фреймворка.
Вуаля. Мы оптимизировали проект. :)
Более подробно здесь: https://developer.android.com/guide/topics/graphics/vector-drawable-resources