Что такое Jetifier?

Что такое Jetifier? Например, чтобы создать новый проект с использованием зависимостей, упакованных androidx, этот новый проект должен добавить следующую строку в файл gradle.properties:

android.enableJetifier=true

Так что же это значит - "включить jetifier"?

2 ответа

Решение

В этом году Google I/O (18) объявил о выпуске Jetpack - набора / набора библиотек для облегчения жизни разработчика.

Jetpack включает в себя ранее представленные компоненты архитектуры Android (ViewModel, Room, Paging, LiveData и т. Д.), А также недавно представленные компоненты архитектуры, такие как WorkManager, Navigation. Помимо этого Jetpack также имеет другой набор библиотек, таких как AndroidX, AndroidKTX и т. Д.

AndroidX - это новая структура пакета для библиотек поддержки Android, таких как поддержка, привязка данных, дизайн и т. Д.

например, теперь подопечные разработчиков будут использовать androidx.databinding. вместо привязки android.datab. при импорте библиотек в наши проекты

Это позволяет Google добавлять SemVer или Semantic Versioning в свои библиотечные пакеты. Для разработчиков это означает, что нам не нужно использовать одну и ту же версию библиотеки поддержки для всех библиотек поддержки. Каждая поддержка или, лучше сказать, библиотека AndroidX будет поддерживать свои собственные версии.

Еще одним преимуществом для разработчиков является то, что нам не нужно заботиться о поддержке одной и той же версии для всех библиотек поддержки в нашем проекте.

Чтобы использовать AndroidX в нашем проекте, мы должны установить для targetSdkVersion для нашего проекта значение 28 и добавить следующие 2 строки в файл gradle.properties.

android.useAndroidX=true

android.enableJetifier=true

Я надеюсь, что это ответит на ваш запрос.

РЕДАКТИРОВАТЬ

Эта ссылка имеет отображение всех компонентов библиотеки поддержки с их счетчиком AndroidX.

Также, пожалуйста, обратитесь к этому блогу за подробным объяснением об AndroidX

ОБНОВИТЬ

Согласно официальной документации Jetifier

Инструмент Jetifier переносит библиотеки, зависящие от поддержки библиотек, чтобы полагаться на эквивалентные пакеты AndroidX. Этот инструмент позволяет напрямую переносить отдельную библиотеку вместо использования подключаемого модуля Android Gradle, поставляемого в комплекте с Android Studio.

Предполагая, что вы знаете о AndroidXЕсли нет - пожалуйста, смотрите @ этот пост.

Jetifier преобразует support libraries всех ваших зависимостей AndroidX автоматически, если вы не установите его true тогда ваш проект будет иметь поддержку ( устарела после версии 28.0.0) и пакет AndroidX, который является избыточным.

Пример объясняет лучше

Если у вас есть PhotoView.java в вашей зависимости. Который использует библиотеку поддержки AppCompatImageView,

import android.support.v7.widget.AppCompatImageView;

Этот класс теперь перемещен в androidx пакет, так как будет PhotoView получить андроид AppCompatImageView? И приложение все еще работает в устройстве.

Кто сделал этот пробег?

Jetifier, который преобразует весь пакет поддержки зависимостей во время сборки.

Jetifier преобразует android.support.v7.widget.AppCompatImageView в androidx.appcompat.widget.AppCompatImageView пока строю проект.

Заключение

Включение Jetifier важно при переходе с библиотек поддержки на AndroidX.

Смотрите этот пост, чтобы понять больше о AndroidX.

Информация

Ваш код может показывать ошибки времени компиляции после включения Jetifier при использовании классов зависимостей. который вы можете удалить, удалив .idea, .gradle и повторно синхронизировать проект.

image2

image1

Jetifier помогает в миграции Android-проекта на AndroidX.

Jetifier помогает сделать стороннюю библиотеку совместимой с вашим проектом AndroidX.

Если вы не используете какую-либо стороннюю библиотеку в своем проекте Android, вам не нужно использовать Jetifier, потому что Jetifier помогает только в том, чтобы "сделать стороннюю библиотеку" совместимой с вашим проектом в случае перехода на AndroidX. Таким образом, чтобы ваш проект использовал Jetifier, вы пишете код ниже в gradle.properties.

android.enableJetifier=true
android.useAndroidX=true

Если вы не переходите на AndroidX и не используете предыдущий способ использования библиотек Android (например, com.android.support), то эти сторонние библиотеки не должны быть совместимыми, поскольку эти сторонние библиотеки уже совместимы с предыдущим способом используя библиотеки Android. В этом случае вам не нужно использовать Jetifier, так что теперь вам не нужно писать строки, приведенные выше, или вы можете просто написать, как показано ниже, чтобы изменить значения в будущем, чтобы перейти на androidx:-

android.enableJetifier=false
android.useAndroidX=false

Из официального документа

Если для этого флага установлено значение true, плагин Android автоматически переносит существующие сторонние библиотеки на использование зависимостей AndroidX, переписывая их двоичные файлы. По умолчанию флаг ложен, если он не указан.

Это полезно для совместимости. Когда потребитель используетandroidX и производитель использует support. Например, когда ваш проект наAndroidX хочет использовать зависимость, которая использует support library вместо того AndroidX [Пример]

Jetifier

Jetifier - это удобный инструмент, который автоматически переносит ваши dependencies в AndroidX во время сборки. Без него вам понадобится каждая зависимость, которую вы используете, чтобы иметь версию AndroidX, прежде чем вы сможете выполнить миграцию, и это, вероятно, не произойдет в течение некоторого времени.

Есть важное ограничение, которое нужно отметить: джитайтер работает только с упакованными артефактами. Он не работает с вашим исходным кодом, который вы должны обновить самостоятельно

для включения AndroidX необходимо добавить 2 флага gradle.properties файл. Первый флаг указывает плагину Android использовать AndroidX пакеты вместо AppCompat, а второй флаг включит Jetifier:

android.useAndroidX=true
android.enableJetifier=true

Смотрите это, этот пост, чтобы понять больше о AndroidX

Добавьте эти две строки android.useAndroidX=true

android.enableJetifier=true

в buid.gradle Это сработало для меня

Другие вопросы по тегам