Что такое Jetifier?

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

android.enableJetifier=true

Так что это значит - «включить jetifier»?

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.

CommonsWare 04.08.2018 00:24
106
1
61 726
6
Перейти к ответу Данный вопрос помечен как решенный

Ответы 6

Ответ принят как подходящий

В этом году на 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.

David Miguel 09.10.2018 15:36

@DavidMiguel Я дал ответ на главный заданный вопрос: что это означает - «включить jetifier» ?. Хотя, если вы считаете, что мой ответ частичный, я соответствующим образом обновлю свой ответ.

silwar 09.10.2018 16:19

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

Jetifier will convert support libraries of all your dependencies to AndroidX automatically, if you don't set it to true then 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 и повторно синхронизируя проект.

image2

image1

Вы можете избавиться от ошибок времени компиляции, удалив .idea / libraries и повторно синхронизируя Gradle.

Clo Knibbe 06.10.2018 01:21

Я думаю, что Jetifier работает во время сборки, а не во время выполнения, как упоминалось здесь. Вы можете использовать android.enableJetifier = true в gradle или использовать автономный инструмент jetifier developer.android.com/studio/command-line/jetifier для перехода на androidx. Оба этих параметра заменяют имена пакетов во время сборки, поэтому старые библиотеки поддержки даже не являются частью упаковки.

Nishanth 01.11.2018 18:33

Это лучший ответ. +1

user10186832 01.05.2021 14:35

Jetifier

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

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

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

android.useAndroidX=true
android.enableJetifier=true

См. Сообщение это, это, чтобы узнать больше об AndroidX

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 Это сработало для меня

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