113

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

android.enableJetifier=true

那么它是什么意思 - “启用喷射器”?

4

6 回答 6

88

假设你熟悉AndroidX. 如果没有,请看@这个帖子

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

例如

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

import android.support.v7.widget.AppCompatImageView;

这个类现在被移动到androidx包中,那么如何PhotoView获得 androidxAppCompatImageView呢?并且应用程序仍然在设备中运行。

谁做的?

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

Jetifier 将在构建项目时转换android.support.v7.widget.AppCompatImageView为。androidx.appcompat.widget.AppCompatImageView

结论

当您从支持库迁移到AndroidX时,启用 Jetifier 很重要

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

信息

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

图2

图像1

于 2018-09-26T13:22:33.510 回答
79

在今年的 Google I/O (18) 上,Google 发布了 Jetpack,它是一组库,可以让开发者的生活更轻松。

Jetpack 包括之前引入的 Android 架构组件(ViewModel、Room、Paging、LiveData 等)以及新引入的架构组件,如 WorkManager、Navigation。除了这个 Jetpack 还有其他的库,如 AndroidX、AndroidKTX 等。

AndroidX 是 Android 支持库(如支持、数据绑定、设计等)的新包结构。

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

这使 Google 能够在库包中添加SemVer语义版本控制。对于开发人员来说,这意味着我们不必为所有支持库使用相同的支持库版本。每个支持或更好的说法是 AndroidX 库都将维护自己的版本控制。

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

关于 Jetifier,它在构建时转换所有依赖的支持包。根据 Jetifier 的官方文档

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

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

android.useAndroidX=true

android.enableJetifier=true

我希望这能回答你的问题。

编辑

此链接包含所有支持库组件与其 AndroidX 对应部分的映射。

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

于 2018-08-24T10:15:05.710 回答
10

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

Jetifier有助于使3rd 方库与您的 AndroidX 项目兼容。

如果您没有在您的 android 项目中使用任何 3rd 方库,那么您不需要使用 Jetifier,因为 Jetifier 仅有助于“使 3rd 方库”与您的项目兼容,以防您迁移到 AndroidX。因此,为了让您的项目使用 Jetifier,您可以在gradle.properties中编写以下代码。

android.enableJetifier=true
android.useAndroidX=true

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

android.enableJetifier=false
android.useAndroidX=false
于 2019-06-07T08:39:08.803 回答
6

喷射器

来自官方文档

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

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

于 2019-10-25T11:12:22.100 回答
4

喷射器

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

有一个重要的限制需要注意:jetifier 仅适用于打包的工件。它不适用于您的源代码,您需要自己更新

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

android.useAndroidX=true
android.enableJetifier=true

这个这篇文章来了解更多关于AndroidX

于 2019-05-22T10:36:24.710 回答
-1

添加这两行 android.useAndroidX=true

android.enableJetifier=true

在 buid.gradle 它对我有用

于 2020-06-25T16:43:52.353 回答