代码之家  ›  专栏  ›  技术社区  ›  Ksenia

什么是Jetifier?

  •  45
  • Ksenia  · 技术社区  · 6 年前

    什么是Jetifier?例如,要使用androidx打包的依赖项创建新项目,此新项目需要将以下行添加到 梯度特性 文件:

    android.enableJetifier=true
    

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

    3 回复  |  直到 6 年前
        1
  •  50
  •   silwar    6 年前

    今年的Google I/O(18),Google发布了Jetpack,它设置/收集了一些库,让开发者的生活更轻松。

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

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

    开发人员将使用 androidx.数据绑定。 而不是 android.数据绑定。 在项目中导入库时

    这使得Google能够添加 塞姆弗 语义版本控制 在图书馆的包裹里。对于开发人员来说,这意味着我们不必对所有支持库使用相同的支持库版本。每一个支持或者更好地说AndroidX库都将维护自己的版本控制。

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

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

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

    要在项目中使用AndroidX,我们必须将项目的targetSdkVersion设置为 二十八 并在中添加以下两行 梯度特性 文件。

    android.useAndroidX=true
    
    android.enableJetifier=true
    

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

    编辑

    This link 具有所有支持库组件及其AndroidX计数器部分的映射。

    也请参考 This 关于AndroidX的详细解释的博客

        2
  •  60
  •   Jeff Y    5 年前

    假设你熟悉 AndroidX . 如果没有,请看@ this post .

    Jetifier 将转换 support libraries 你所有的依赖 到 安卓立德 如果不设置为 true 那么你的 这两个项目都有,支持( got deprecated after 28.0.0 version )以及 AndroidX 包,这是多余的。

    例如

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

    import android.support.v7.widget.AppCompatImageView;
    

    这个班现在移到 androidx 打包,那怎么办 PhotoView 得到安德洛伊德 AppCompatImageView ? 应用程序仍在设备中运行。

    是谁跑的?

    冻胶机 ,它在生成时转换依赖项的所有支持包。

    Jetifier将转换 android.support.v7.widget.AppCompatImageView androidx.appcompat.widget.AppCompatImageView 在建设项目的时候。

    结论

    从迁移时启用Jetifier很重要 Support Libraries AndroidX .

    这个帖子 了解更多关于AndroidX的信息。

    信息

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

    image2

    image1

        3
  •  5
  •   Abhishek Kumar    5 年前

    冻胶机 帮助将android项目迁移到 安卓立德 .

    冻胶机 有助于 第三方 图书馆 兼容的 你的AndroidX项目。

    如果你没有在你的android项目中使用任何第三方库,那么你不需要使用Jetifier,因为Jetifier只在“使第三方库”与你的项目兼容以防你迁移到AndroidX。为了让你的项目使用Jetifier,你在下面的代码中 梯度特性 .

    android.enableJetifier=true
    android.useAndroidX=true
    

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

    android.enableJetifier=false
    android.useAndroidX=false
    
        4
  •  2
  •   Basi    5 年前

    冻胶机

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

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

    要启用AndroidX,需要在 gradle.properties 文件。第一个标志告诉Android插件使用 安卓立德 包而不是 AppCompat ,第二个标志将启用 Jetifier :

    android.useAndroidX=true
    android.enableJetifier=true
    

    this , this 发布以了解有关AndroidX的更多信息

        5
  •  0
  •   yoAlex5    5 年前

    official doc

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

    它对兼容性很有用。当消费者使用 androidX 制作人使用 support . 例如,当您的项目 AndroidX 希望使用使用 support library 而不是 安卓立德 [Example]