什么是Jetifier?

Kse*_*nia 80 android gradle androidx

什么是Jetifier?例如,要使用androidx打包的依赖项创建一个新项目,这个新项目需要将以下行添加到gradle.properties文件中:

android.enableJetifier=true
Run Code Online (Sandbox Code Playgroud)

那是什么意思 - "启用jetifier"?

Khe*_*raj 60

假设你知道AndroidX,如果没有 - 请看@ 这篇文章.

Jetifiersupport libraries所有依赖项AndroidX自动转换为自动转换,如果不设置它,true那么您的项目将同时支持(在28.0.0版本之后弃用)和AndroidX包,这是多余的.

例如

如果你有PhotoView.java依赖.那使用支持库AppCompatImageView.

import android.support.v7.widget.AppCompatImageView;
Run Code Online (Sandbox Code Playgroud)

这个类现在被移动到androidx包,那么如何PhotoView获得androidx AppCompatImageView?而app仍在设备中运行.

是谁跑了?

Jetifier,在构建时转换所有依赖的支持包.

Jetifier将转变android.support.v7.widget.AppCompatImageViewandroidx.appcompat.widget.AppCompatImageView同时建设该项目.

结论

支持库迁移到AndroidX时,启用Jetifier非常重要.

请参阅此帖子以了解有关AndroidX的更多信息.

信息

在使用依赖类时启用Jetifier后,您的代码可能会显示编译时错误.您可以通过删除删除.idea,.gradle并重新同步项目.

图像2

此搜索

  • 您可以通过删除.idea/libraries并重新同步Gradle来消除编译时错误. (9认同)

sil*_*war 50

今年的谷歌I/O(18),谷歌已经宣布Jetpack是一个集合/库集合,使开发人员的生活更轻松.

Jetpack包括以前推出的Android架构组件(ViewModel,Room,Paging,LiveData等)以及新引入的架构组件,如WorkManager,Navigation.除此之外,Jetpack还有其他一些库,如AndroidX,AndroidKTX等.

AndroidX是Android支持库的新包结构,如支持,数据绑定,设计等.

例如,现在在病房开发人员将使用androidx.databinding.而不是android.databinding.在我们的项目中导入库

这使Google能够在库包中添加SemVerSemantic Versioning.对于开发人员,这意味着我们不必为所有支持库使用相同的支持库版本.每个支持或更好的说AndroidX库将保持自己的版本.

开发人员的另一个优点是我们不必关心为项目中的所有支持库维护相同的版本.

要在out项目中使用AndroidX,我们必须将项目的targetSdkVersion设置为28,并在gradle.properties文件中添加以下2行.

android.useAndroidX=true

android.enableJetifier=true
Run Code Online (Sandbox Code Playgroud)

我希望这会回答你的问题.

编辑

此链接包含所有支持库组件与其AndroidX计数器部分的映射.

另请参阅博客以获取有关AndroidX的详细说明

UPDATE

根据Jetifier的官方文件

Jetifier工具迁移依赖于支持库的库,而不是依赖于等效的AndroidX软件包.该工具允许您直接迁移单个库,而不是使用与Android Studio捆绑在一起的Android gradle插件.

  • 你真的不回答"什么是Jetifier?"这个问题,只是关注AndroidX和Jetpack. (27认同)
  • @DavidMiguel我已经提出了主要问题的答案,这是什么意思 - "启用jetifier"?虽然如果你认为我的回答是不完整的,我会相应地更新我的回答. (2认同)

yoA*_*ex5 7

喷射器

来自官方文档

当此标志设置为 true 时,Android 插件会自动迁移现有的第三方库,以通过重写其二进制文件来使用 AndroidX 依赖项。如果未指定,该标志默认为 false。

它对于兼容性很有用。当消费者使用androidX并且生产者使用support. 例如,当您的项目AndroidX想要使用依赖项时,它使用support library而不是AndroidX[示例]


Bas*_*asi 5

喷射器

jetifier是一个方便的工具,可以在构建时自动dependencies迁移到。AndroidX如果没有它,您需要使用的每个依赖项都有一个 AndroidX 版本才能迁移,而这可能在一段时间内不会发生。

有一个需要注意的重要限制:喷射器仅适用于包装好的工件。它不适用于您的源代码,您需要自行更新

要启用 AndroidX,您需要在gradle.properties文件中添加 2 个标志。第一个标志告诉 Android 插件使用AndroidX包而不是AppCompat,第二个标志将启用Jetifier

android.useAndroidX=true
android.enableJetifier=true
Run Code Online (Sandbox Code Playgroud)

请参阅这篇文章以了解有关 AndroidX 的更多信息


Abh*_*mar 5

Jetifier有助于将android项目迁移到AndroidX

Jetifier有助于使第三方库与您的AndroidX项目兼容

如果您在android项目中未使用任何第三方库,则无需使用Jetifier,因为在迁移到AndroidX的情况下,Jetifier仅有助于“使第三方库”与您的项目兼容。因此,要使您的项目使用Jetifier,请在gradle.properties中编写以下代码。

android.enableJetifier=true
android.useAndroidX=true
Run Code Online (Sandbox Code Playgroud)

如果您不迁移到AndroidX并使用以前使用Android库的方式(例如com.android.support),则无需使这些第三方库兼容,因为这些第三方库已经与以前的方式兼容。使用Android库。在那种情况下,您不需要使用Jetifier,因此,现在,您不需要编写上面给出的行,或者您可以简单地编写以下内容来更改将来的值以移至androidx:

android.enableJetifier=false
android.useAndroidX=false
Run Code Online (Sandbox Code Playgroud)