В этом году на Google I / O (18) Google анонсировал Jetpack, который представляет собой набор / набор библиотек, чтобы облегчить жизнь разработчикам.
Jetpack включает ранее представленные компоненты архитектуры Android (ViewModel, Room, Paging, LiveData и т. д.), А также недавно представленные компоненты архитектуры, такие как WorkManager, Navigation. Помимо этого Jetpack также имеет другой набор библиотек, таких как AndroidX, AndroidKTX и т. д.
AndroidX - это новая структура пакетов для библиотек поддержки Android, таких как поддержка, привязка данных, дизайн и т. д.
например теперь разработчики будут использовать androidx.databinding. вместо android.databinding. при импорте библиотек в наши проекты
Это позволяет Google добавлять в пакеты библиотеки СемВер или Семантическое управление версиями. Для разработчиков это означает, что нам не нужно использовать одну и ту же версию библиотеки поддержки для всех библиотек поддержки. Каждая поддержка или, лучше сказать, библиотека AndroidX будет поддерживать собственное управление версиями.
Еще одним преимуществом для разработчиков является то, что нам не нужно заботиться о том, чтобы поддерживать одну и ту же версию для всей библиотеки поддержки в нашем проекте.
Что касается Jetifier, он преобразует весь пакет поддержки зависимостей во время сборки. Согласно официальной документации Jetifier
Jetifier tool migrates support-library-dependent libraries to rely on the equivalent AndroidX packages instead. The tool lets you migrate an individual library directly, instead of using the Android gradle plugin bundled with Android Studio.
Чтобы использовать AndroidX в проекте, мы должны установить targetSdkVersion для нашего проекта на 28 год и добавить следующие 2 строки в файл gradle.properties.
android.useAndroidX=true
android.enableJetifier=true
Надеюсь, это ответит на ваш вопрос.
РЕДАКТИРОВАТЬ
Эта ссылка имеет отображение всех компонентов библиотеки поддержки с их аналогом AndroidX.
Также, пожалуйста, обратитесь к блогу Этот для получения подробных сведений об AndroidX.
На самом деле вы не отвечаете на вопрос «Что такое Jetifier?», Только про AndroidX и Jetpack.
@DavidMiguel Я дал ответ на главный заданный вопрос: что это означает - «включить jetifier» ?. Хотя, если вы считаете, что мой ответ частичный, я соответствующим образом обновлю свой ответ.
Предполагая, что вы знакомы с AndroidX. Если нет, см. @ эта почта.
Jetifierwill convertsupport librariesof all your dependencies toAndroidXautomatically, if you don't set it totruethen your project will have both, the support (got deprecated after 28.0.0 version) and AndroidX package, which is redundant.
Если у вас есть PhotoView.java в вашей зависимости. Это использует библиотеку поддержки AppCompatImageView.
import android.support.v7.widget.AppCompatImageView;
Этот класс теперь перемещен в пакет androidx, так как же PhotoView получит androidx AppCompatImageView? И приложение все еще работает на устройстве.
Кто совершил этот пробег?
Jetifier, which converts all support package of dependency at build time.
Jetifier конвертирует android.support.v7.widget.AppCompatImageView в androidx.appcompat.widget.AppCompatImageView во время сборки проекта.
Включение Jetifier важно при переходе с Библиотеки поддержки на AndroidX.
См. эта почта, чтобы узнать больше об AndroidX.
Ваш код может отображать ошибки времени компиляции после включения Jetifier при использовании классов зависимостей.
который можно удалить, удалив .idea, .gradle и повторно синхронизируя проект.
Вы можете избавиться от ошибок времени компиляции, удалив .idea / libraries и повторно синхронизируя Gradle.
Я думаю, что Jetifier работает во время сборки, а не во время выполнения, как упоминалось здесь. Вы можете использовать android.enableJetifier = true в gradle или использовать автономный инструмент jetifier developer.android.com/studio/command-line/jetifier для перехода на androidx. Оба этих параметра заменяют имена пакетов во время сборки, поэтому старые библиотеки поддержки даже не являются частью упаковки.
Это лучший ответ. +1
Jetifier
Jetifier - удобный инструмент, который автоматически переносит ваш dependencies на AndroidX во время сборки. Без него вам потребовались бы все зависимости, которые вы используете, чтобы иметь версию AndroidX, прежде чем вы сможете мигрировать, а этого, вероятно, не произойдет в течение некоторого времени.
Следует отметить важное ограничение: средство проверки работает только с упакованными артефактами. Он не работает с вашим исходным кодом, который вы должны обновить самостоятельно.
для включения AndroidX вам нужно добавить 2 флага в ваш файл gradle.properties. Первый флаг указывает подключаемому модулю Android использовать пакеты AndroidX вместо AppCompat, а второй флаг включает Jetifier:
android.useAndroidX=true
android.enableJetifier=true
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
Jetifier
When this flag is set to true, the Android plugin automatically migrates existing third-party libraries to use AndroidX dependencies by rewriting their binaries. The flag is false by default if it is not specified.
Это полезно для совместимости. Когда потребитель использует androidX, а производитель использует support. Например, когда ваш проект на AndroidX хочет использовать зависимость, которая использует support library вместо AndroidX[Example]
Добавьте эти две строки android.useAndroidX = true
android.enableJetifier = true
в buid.gradle Это сработало для меня
IIRC, Jetifier - это недокументированная технология Googly, которая должна автоматически преобразовывать транзитивные зависимости для использования библиотек AndroidX. Например, предположим, что у вас есть
implementation "com.commonsware.cwac:document:0.3.0"в вашемdependencies. Эта версия библиотеки имеет транзитивную зависимость отcom.android.support:support-annotations:27.0.2. Однако вы хотите использоватьandroidx.annotation:annotationкак часть использования других зависимостей AndroidX. Jetifier каким-то образом обновилcom.commonsware.cwac:document, чтобы использоватьandroidx.annotation:annotation.