当我注意到我可以使用两种不同的依赖项时,我正打算在项目中使用约束布局:
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和相应的库等价物。
答案 0 :(得分:15)
所有支持库都放弃了v4 v7 v12 v13等标签,所有内容都重构到了androidx软件包中。
它们本质上是相同的但是为了将来的参考,androidx将是我们应该在我们的应用程序中使用的库。
本周出现的Android工作室3.2金丝雀(2018年5月14日那周)应该有允许自动重构到androidx软件包的工具。有人在谷歌i / o 2018上发布了这个消息。答案 1 :(得分:4)
这可能有帮助,
有一些区别,如下:
根据当前的命名约定,目前尚不清楚哪些软件包与Android操作系统捆绑在一起,哪些软件包与应用程序的APK(Android软件包套件)打包在一起。为了消除这种混乱,所有未捆绑的库都将移至AndroidX的androidx。*名称空间,而android。*包层次结构将保留给Android操作系统随附的包。
例如:android.content.Intent;
依赖于Android OS,而androidx.fragment.app.Fragment;
随APK一起提供
最初,每个软件包的名称都指示该软件包支持的最低API级别,例如support-v4。但是,支持库的版本26.0.0将最低API增加到14,因此今天,许多软件包名称都与最低支持的API级别无关。当support-v4和support-v7软件包的最小API均为14时,很容易看出人们为什么感到困惑!因此,现在有了AndroidX,就不再依赖于API级别。
答案 2 :(得分:1)
AndroidX和支持库之间的区别之一是,当您使用支持库时,所有支持库必须具有相同的版本,但是在androidX中没有这样的东西。
另一件事是,在支持库中,大多数时候,当您需要在应用程序中添加组件时,您必须添加依赖项,而这些依赖项包含了许多您实际上不需要的东西。但是在AndroidX中,您只能添加所需的依赖项,而不再添加。
答案 3 :(得分:0)
如上所述和在Migrating to AndroidX中,您可以轻松地在AS中迁移:
使用Android Studio 3.2及更高版本,您可以快速迁移 通过选择重构>迁移到来使用AndroidX的现有项目 菜单栏中的 AndroidX 。
关于差异(TLDR:无损失,重点是我的)
AndroidX将原始的支持库API包映射到 androidx名称空间。仅软件包和Maven工件名称已更改; 类,方法和字段名称未更改。