Переход на AndroidX

Не так давно Google представила массам библиотеку AndroidX, которая оправданно навела немало хайпа в Android сообществе, ведь теперь этот переход не просто очередная модная фишечка, которую можно будет опробовать в своих проектах, это более чем must have фича, которую не избежать.

Сама подготовка к миграции выглядит очень и очень заманчивой(на первый взгляд). По сути у Вас должны быть все суппорт библиотеки последних версий и Вы должны быть уверены что у Вас используется build.app:

compileSdkVersion 28
targetSdkVersion 28

Ну а дальше немного магии, благо сам переход не представляет из себя ничего сложного. И на самом деле сам переход весьма прост для проектов которые Вы только стартуете, или в проекте где за плечами ещё не так много подключенных зависимостей.

Прыгаем в корень проекта, там находим файл gradle.properties, в котором дописываем следующие строки:

android.useAndroidX=true
android.enableJetifier=true

Если коротко, то эти флаги мы устанавливаем для того, чтобы при сборке нашего проекта, все наши зависимости корректно подменились на зависимости AndroidX автоматически(как удобно).

И если Вы используете Android Studio, то советую обновиться не менее чем до 3.2 версии, там Вас ждёт приятная функция рефакторинга: “Migrate to AndroidX…”, которая в свою очередь поможет преобразовать существующий код в код(масло масляное) поддерживающий AndroidX.


При этом Вам студия предложит сделать резервную копию проекта, не ленитесь, лишним не будет(особенно будет актуально для тех, кто по каким то магическим причинам ещё не пользуется системой контроля аля Git, кто ещё не знаком оставлю ссылку здесь, всем настоятельно рекомендую установить Git). После этого смело жмём “Migrate”.

Внизу отобразиться раздел “Refactoring Preview” где будет показано в каких файлах будут проходить те или иные изменения. Так может сложиться что некоторые изменения придётся рефакторить вручную, а возможно и нет, во всяком случае это будет чуточку позже Смело жмём “Do Refactor”, ну а потому что можем себе позволить, мы разработчики!



Если после миграции, Вы запускаете приложение и у Вас всё работает, супер, мега, огонь. Можно останавливаться на этом этапе и по мере необходимости в будущем добавлять необходимые зависимости

Увы есть и обратная сторона медали, а именно изменение некоторых зависимостей в ручную. По запуску Вашего приложения, внизу откроется весь перечень классов и ошибок, не пугаемся, и начинаем разбирать всё по порядку.

Во-первых, на что следует обратить внимание и что может сослужить хорошую нам службу, так это перечень старых библиотек и их чудесных альтернатив, которые расположены здесь, милости прошу.

Во-вторых, на что следует обратить внимание так это на наличие кастомных вьюшек и вьюшек в целом, так как в некоторых классах ошибки могут быть конкретно по их вине(спойлер: не связанные с импортом). Переходим в класс View и фиксим тут всё как следует.

Ну а далее по списку, процедура проста и банальна(не особо люблю употреблять в разработке подобные слова). Переходим в класс, содержащий ошибку и удаляем старую зависимость, заменяя на новую, как понять какая старая, какая молодая я выше скинул ссылку. После чего импортируем классы зависимостей из молодой и перспективной библиотеки AndroidX. И так нам предстоит пройтись по всем классам содержащие подобные ошибки.

После того как мы решили все ошибки, не забываем сделать старые и добрые команды “Clean Project”, “Rebuild Project”, можно даже “Invalidate Caches/Restart…”. Особенно актуальны команды для обладателей не Mac машин, т.к. есть некоторые проблемы кэширования и самой сборки проекта, но это уже совершенно другая история Ну и конечно же для того чтобы корректно пересоздались классы “DataBinding” и “Room” если Вы их используете у себя конечно, во всяком случае лишним не будет
Также маленькая проблема с которой столкнулся пускай и не совсем явно, но всё же. Если Вы мигрировали свой проект на AndroidX, а библиотеку/модуль, которую написали ручками для этого же проекта нет, то увы, это не сработает. И придётся библиотеку/модуль также мигрировать на AndroidX. Так что имейте в виду.
В заключении хотелось бы отметить следующее, если Вы только начинаете строить свои проекты, то несомненно стоит сразу переходить на AndroidX, потому как его не избежать в будущем. Если же Вы только задумываетесь о переходе, а за плечами громадный проект, с большим количеством модулей, зависимостей и других страшных слов, то советую всё таки немного повременить, так как конфликтов и легких костылей Вам не избежать. В любом случае пробуйте, эксперементируйте и всё у Вас непременно получится
Теги:
android, AndroidX, миграция

Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.