androidx和com.android.support

时间:2018-05-14 20:13:11

标签: android android-support-library androidx

当我注意到我可以使用两种不同的依赖项时,我正打算在项目中使用约束布局:

  • com.android.support.constraint:constraint-layout
  • androidx.constraintlayout:constraintlayout

这两者之间是否存在差异或哪些建议更可取?

编辑

Google停止了对com.android.support的支持,并提示用户迁移到新的androidx等效内容。

  

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

     

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

     

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

这是官方Migration guide和相应的库等价物。

4 个答案:

答案 0 :(得分:15)

所有支持库都放弃了v4 v7 v12 v13等标签,所有内容都重构到了androidx软件包中。

它们本质上是相同的但是为了将来的参考,androidx将是我们应该在我们的应用程序中使用的库。

本周出现的Android工作室3.2金丝雀(2018年5月14日那周)应该有允许自动重构到androidx软件包的工具。有人在谷歌i / o 2018上发布了这个消息。

答案 1 :(得分:4)

这可能有帮助,

有一些区别,如下:

  1. 根据当前的命名约定,目前尚不清楚哪些软件包与Android操作系统捆绑在一起,哪些软件包与应用程序的APK(Android软件包套件)打包在一起。为了消除这种混乱,所有未捆绑的库都将移至AndroidX的androidx。*名称空间,而android。*包层次结构将保留给Android操作系统随附的包。 例如:android.content.Intent;依赖于Android OS,而androidx.fragment.app.Fragment;随APK一起提供

  2. 最初,每个软件包的名称都指示该软件包支持的最低API级别,例如support-v4。但是,支持库的版本26.0.0将最低API增加到14,因此今天,许多软件包名称都与最低支持的API级别无关。当support-v4和support-v7软件包的最小API均为14时,很容易看出人们为什么感到困惑!因此,现在有了AndroidX,就不再依赖于API级别。

  3. 这只是对第二点的扩展,另一个重要的变化是AndroidX工件将独立更新,因此您可以更新项目中的各个AndroidX库,而不必一次更改每个依赖关系。那些令人沮丧的“ 所有com.android.support库必须使用完全相同的版本规范”消息已经成为过去!

答案 2 :(得分:1)

AndroidX和支持库之间的区别之一是,当您使用支持库时,所有支持库必须具有相同的版本,但是在androidX中没有这样的东西。

另一件事是,在支持库中,大多数时候,当您需要在应用程序中添加组件时,您必须添加依赖项,而这些依赖项包含了许多您实际上不需要的东西。但是在AndroidX中,您只能添加所需的依赖项,而不再添加。

答案 3 :(得分:0)

如上所述和在Migrating to AndroidX中,您可以轻松地在AS中迁移:

  

使用Android Studio 3.2及更高版本,您可以快速迁移   通过选择重构>迁移到来使用AndroidX的现有项目   菜单栏中的 AndroidX

关于差异(TLDR:无损失,重点是我的)

  

AndroidX将原始的支持库API包映射到   androidx名称空间。仅软件包和Maven工件名称已更改;   类,方法和字段名称未更改