gradle 什么是Jetifier?

vu8f3i0k  于 2023-02-04  发布在  其他
关注(0)|答案(6)|浏览(170)

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

android.enableJetifier=true

那么“启用jetifier”是什么意思呢?

tmb3ates

tmb3ates1#

假设您熟悉AndroidX,如果不熟悉,请参见@this post
Jetifier会自动将所有依赖项中的support libraries转换为AndroidX,如果您不将其设置为true,则您的项目将同时拥有support(got deprecated after 28.0.0 version)和AndroidX包,这是多余的。

* 例如 *

如果你的依赖项中有PhotoView.java,那就使用支持库AppCompatImageView

import android.support.v7.widget.AppCompatImageView;

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

这次是谁跑的
Jetifier,在构建时转换所有依赖项的支持包。

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

* 结论 *

Support Libraries迁移到AndroidX时,启用Jetier非常重要

请参阅this post以了解有关AndroidX的更多信息。

信息

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

tpxzln5u

tpxzln5u2#

今年的Google I/O(18),Google已经宣布了Jetpack,它是一个库集合,让开发者的工作更轻松。
Jetpack包括以前引入的Android架构组件(ViewModel,Room,Paging,LiveData等)以及新引入的架构组件(如WorkManager,Navigation)。除此之外,Jetpack还拥有其他库集,如AndroidX,AndroidKTX等。
AndroidX是Android支持库(如支持、数据绑定、设计等)的新包结构。
例如,现在开发人员在项目中导入库时将使用androidx.databinding.而不是android.databinding.
这使得Google可以在库包中添加SemVerSemantic Versioning。对于开发者来说,这意味着我们不必对所有支持库使用相同的支持库版本。每个支持或更好地说,AndroidX库将维护自己的版本。
对于开发人员来说,另一个优势是我们不必关心在项目中为所有支持库维护相同的版本。
关于Jetifier,它在构建时转换所有依赖项的支持包。
Jetifier工具可迁移依赖于支持库的库,使其依赖于等效的AndroidX包。该工具允许您直接迁移单个库,而无需使用Android Studio捆绑的Android gradle插件。
要在项目中使用AndroidX,我们必须将项目的targetSdkVersion设置为28,并在gradle. properties文件中添加以下2行。

android.useAndroidX=true

android.enableJetifier=true

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

    • 编辑**

This link具有所有支持库组件与其AndroidX对应部件的Map。
也请参考This博客了解关于AndroidX的详细解释

6yjfywim

6yjfywim3#

Jetier帮助将安卓项目迁移到AndroidX
Jetier有助于使第三方与您的AndroidX项目兼容**。

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

android.enableJetifier=true
android.useAndroidX=true

如果您没有迁移到AndroidX,而是使用以前使用Android库的方式(例如:com.android.support),那么这些第三方库不需要兼容,因为这些第三方库已经兼容了以前使用Android库的方式。在这种情况下,你不需要使用Jetier,所以现在,你不需要写上面给出的行,或者你可以简单地写如下,以改变未来迁移到androidx的值:-

android.enableJetifier=false
android.useAndroidX=false
pkwftd7m

pkwftd7m4#

捷迪耶

来自官方文件
当此标志设置为true时,Android插件会自动迁移现有的第三方库,通过重写其二进制文件来使用AndroidX依赖项。如果未指定此标志,则默认为false。
这对于兼容性非常有用。当使用者使用androidX,而生产者使用support时。例如,当AndroidX上的项目要使用依赖项时,该依赖项使用support library而不是AndroidXExample(https://stackoverflow.com/a/58557383/4770877)

zkure5ic

zkure5ic5#

    • 捷迪耶**

jetifier是一个方便的工具,可以在构建时自动将dependencies迁移到AndroidX。如果没有它,在迁移之前,您需要使用的每个依赖项都有一个AndroidX版本,而这可能在一段时间内不会发生。
有一个重要的限制需要注意:jetifier只对打包的工件有效,对你的源代码无效,你需要自己更新源代码
要启用AndroidX,您需要向gradle.properties文件添加2个标志。第一个标志告诉Android插件使用AndroidX软件包而不是AppCompat,第二个标志将启用Jetifier

android.useAndroidX=true
android.enableJetifier=true

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

z5btuh9x

z5btuh9x6#

将这两行添加到buid.gradle

android.useAndroidX=true
android.enableJetifier=true

相关问题