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

Sta*_*low 1 android android-support-library android-recyclerview android-support-design

我正在使用以下内容RecyclerView

<androidx.recyclerview.widget.RecyclerView ... />
Run Code Online (Sandbox Code Playgroud)

在以下方面具有以下依赖性build.gradle

implementation 'androidx.recyclerview:recyclerview:1.0.0'
Run Code Online (Sandbox Code Playgroud)

点击android studio RecyclerViewin Design模式前面的下载按钮后下载。我运行我的应用程序Oreo,它运行完美。

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

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

implementation 'com.android.support:recyclerview-v7:28.0.0'
Run Code Online (Sandbox Code Playgroud)

和以下xml标签:

<android.support.v7.widget.RecyclerView ... />
Run Code Online (Sandbox Code Playgroud)

现在我的问题是

<androidx.recyclerview.widget.RecyclerView ... />
implementation 'androidx.recyclerview:recyclerview:1.0.0'
Run Code Online (Sandbox Code Playgroud)

<android.support.v7.widget.RecyclerView ... />
implementation 'com.android.support:recyclerview-v7:28.0.0'
Run Code Online (Sandbox Code Playgroud)

哪一个是为哪个目的而创建的,哪个应该在哪种情况下使用?为什么android studio会下载不支持的版本,KitKat而不是下载几乎先前版本的android所支持的版本?谢谢!!!

ישו*_*ותך 5

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

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

注意:随着Android 9.0(API级别28)的发布,Jetpack包含了一个新版本的支持库AndroidX。AndroidX库包含现有的支持库,还包含最新的Jetpack组件。

您可以继续使用支持库。历史工件(那些版本为27和更低版本,并打包为android.support。*的工件)将在Google Maven上可用。但是,所有新的库开发都将在AndroidX库中进行。

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

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


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

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


哪一个是为哪个目的而创建的,哪个应该在哪种情况下使用?

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

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