androidx

Разработчики из 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 не задумываться, но посмотреть и испробовать на небольших проектах определённо стоит.