Разработчики из Google провели глобальный рефакторинг всех своих библиотек для Android. Теперь есть два корневых пакета:
- android.* — классы из Android SDK;
- androidx.* — классы дополнительных библиотек от Google.
В androidx переехали все библиотеки поддержки, архитектурные компоненты, библиотека multidex, библиотеки для тестирования. В общем, (почти) всё, что не входит в Android SDK. Вместе с именами пакетов поменялись и id библиотек. Все библиотеки теперь входят в общий набор под названием Jetpack.
com.android.support → androidx:
Support библиотеки существуют давно и накопилось много версий: v4, v7, v13 и т.д. Уже мало кто помнит, в какой версии что находится. Новая схема именования призвана привнести немного порядка в этот хаос.
Для примера:
com.android.support:appcompat-v7 -> androidx.appcompat:appcompat
com.android.support:recyclerview-v7 -> androidx.recyclerview:recyclerview
com.android.support:recyclerview-selection -> androidx.recyclerview:recyclerview-selection
С полным списком библиотек и классов можно ознакомиться по ссылке.
Версию support library сбросили до 1.0.0 и, теперь версии отдельных библиотек не привязаны друг к другу и могут быть обновлены отдельно. Также версия support библиотек больше не привязана к версии Android API. Последней версией со старой схемой именования станет 28.
Как обновиться:
Поддержка androidx появилась в Android Studio 3.2. Для миграции проектов на androidx в меню Refactoring появился пункт «Migrate to AndroidX»:
После рефакторинга будут изменены зависимости в gradle и импорты в классах:
В файле gradle.properties добавятся две строки:
- android.useAndroidX=true — включает поддержку androidx;
- android.enableJetifier=true — включает jetifier — специальный инструмент, который подменяет зависимости в подключенных библиотеках на androidx.
Не всегда рефакторинг срабатывает корректно, иногда нужно немного поправить руками.
Переходить ли сейчас?
Спешить с миграцией на androidx не стоит, так как могут возникнуть проблемы со сторонними библиотеками, но со временем это наверняка будет исправлено. Jetifier тоже может работать некорректно, особенно в многомодульных проектах и в проектах с несколькими флейворами. Пока осуществляется поддержка support lib 28, а это примерно до выхода Android 10, можно сильно об androidx не задумываться, но посмотреть и испробовать на небольших проектах определённо стоит.