两个RecyclerView依赖项之间有什么区别?

时间:2019-07-29 21:57:29

标签: android android-recyclerview android-support-library android-support-design

我正在使用以下RecyclerView

<androidx.recyclerview.widget.RecyclerView ... />

build.gradle中具有以下依赖性:

implementation 'androidx.recyclerview:recyclerview:1.0.0'

,它是在Android Studio的RecyclerView模式下单击Design前面的下载按钮后下载的。 我在Oreo上运行我的应用程序,它运行良好。

但是,当我在KitKat上运行该应用程序时,该应用程序被终止,因此我将RecyclerView及其相关源代码注释掉,然后再次运行该应用程序,这次应用程序在{{ 1}},所以我意识到问题出在KitKat版本的RecyclerView上。

现在我做了一些研究,发现我必须使用:

KitKat

以及以下xml标记:

implementation 'com.android.support:recyclerview-v7:28.0.0'

现在我的问题是

有什么区别
<android.support.v7.widget.RecyclerView ... />

<androidx.recyclerview.widget.RecyclerView ... />
implementation 'androidx.recyclerview:recyclerview:1.0.0'

为哪个目的创建了哪个?在哪种情况下应该使用哪个?为什么android studio下载<android.support.v7.widget.RecyclerView ... /> implementation 'com.android.support:recyclerview-v7:28.0.0' 不支持的版本而不是下载几乎先前版本的android支持的版本?谢谢!!!

1 个答案:

答案 0 :(得分:5)

  

两个RecyclerView依赖项之间有什么区别?

RecyclerView 支持库RecyclerView AndroidX库具有相同的用途。主要区别在于软件包名称。 AndroidX主要是重新打包和重新命名的支持库,其主要目的是简化Android开发过程。所有支持库功能仍在AndroidX中存在,但是最新功能和开发已转移到了AndroidX。但这并不意味着不赞成使用支持库。请参阅Support Library文档中的以下说明 :

  

注意:随着Android 9.0(API级别28)的发布,新的   支持库版本AndroidX,它是   喷气背包AndroidX库包含现有的支持库   并且还包括最新的Jetpack组件。

     

您可以继续使用支持库。历史文物   (那些版本为27或更早版本,并打包为android.support。*)   仍可在Google Maven上使用。但是,所有新图书馆   开发将在AndroidX库中进行。

     

我们建议在所有新项目中使用AndroidX库。您   还应该考虑将现有项目迁移到AndroidX。

因此,您应该为最近的项目迁移到AndroidX。


  

但是,当我在KitKat上运行该应用程序时,该应用程序被终止,因此我注释掉RecyclerView及其相关源代码,然后再次运行该应用程序,这次应用程序在KitKat上正常运行,因此我意识到问题出在KitKat版本的RecyclerView。

这可能是您代码中的错误,或者可能性最小的是AndroidX RecyclerView内部的错误。没有您的错误日志,我们无法找到问题。因此,您需要在问题中提供错误日志。


  

为哪个目的创建了哪个?在哪种情况下应该使用哪个?

对于新项目,您应该迁移到AndroidX。但对于紧密依赖需要支持库作为依赖项的库的旧项目,您需要执行以下操作之一:

  1. 将库升级到AndroidX(这很繁琐,可能不值得付出努力)
  2. 继续使用支持库。
  3. 在您的android.enableJetifier中使用gradle.properties,请参阅Migrating to AndroidX