androidx 和 com.android.support 的区别
Difference between androidx and com.android.support
当我注意到我可以使用两种不同的依赖项时,我正要在我的项目中使用约束布局:
com.android.support.constraint:constraint-layout
androidx.constraintlayout:constraintlayout
这两者之间有区别吗?或者有一些建议更可取吗?
编辑
Google 停止支持 com.android.support
并提示用户迁移到新的 androidx
等价物。
Note: With the release of Android 9.0 (API level 28) there is a new version of the support library called AndroidX which is part of Jetpack. The AndroidX library contains the existing support library and also includes the latest Jetpack components.
You can continue to use the support library. Historical artifacts (those versioned 27 and earlier, and packaged as android.support.*) will remain available on Google Maven. However, all new library development will occur in the AndroidX library.
We recommend using the AndroidX libraries in all new projects. You should also consider migrating existing projects to AndroidX as well.
这是官方 Migration guide 和相应的库等价物。
所有支持库都删除了 v4 v7 v12 v13 等标签,所有内容都重构到 androidx 包中。
它们本质上是相同的,但为了将来参考,androidx 将是我们应该在我们的应用程序中使用的库。
Android 本周(2018 年 5 月 14 日那一周)发布的 studio 3.2 canary 应该具有允许自动重构 androidx 包的工具。 google i/o 2018 年有关于此的公告。
AndroidX和Support libraries的区别之一是当你使用support libraries时,所有的support libraries必须是同一个版本,而在androidX中没有这样的东西。
另一件事是,在支持库中,大多数时候当你的应用程序需要一个组件时,你必须添加依赖项,而这些依赖项有很多你真的不需要的东西。但在 AndroidX 中,您只能添加所需的依赖项,不能添加更多。
如上文和 Migrating to AndroidX 中所述,您可以轻松迁移到 AS:
With Android Studio 3.2 and higher, you can quickly migrate an
existing project to use AndroidX by selecting Refactor > Migrate to
AndroidX from the menu bar.
关于差异(TLDR:没有损伤,强调我的)
AndroidX maps the original support library API packages into the
androidx namespace. Only the package and Maven artifact names changed;
class, method, and field names did not change.
这可能有帮助,
有以下几点不同:
根据当前的命名约定,尚不清楚哪些软件包与 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 点的扩展,另一个重要的变化是 AndroidX 工件将独立更新,因此您将能够更新您的个人 AndroidX 库项目,而不是必须一次更改每个依赖项。那些令人沮丧的“所有 com.android.support 库必须使用完全相同的版本规范”消息应该成为过去!
当我注意到我可以使用两种不同的依赖项时,我正要在我的项目中使用约束布局:
com.android.support.constraint:constraint-layout
androidx.constraintlayout:constraintlayout
这两者之间有区别吗?或者有一些建议更可取吗?
编辑
Google 停止支持 com.android.support
并提示用户迁移到新的 androidx
等价物。
Note: With the release of Android 9.0 (API level 28) there is a new version of the support library called AndroidX which is part of Jetpack. The AndroidX library contains the existing support library and also includes the latest Jetpack components.
You can continue to use the support library. Historical artifacts (those versioned 27 and earlier, and packaged as android.support.*) will remain available on Google Maven. However, all new library development will occur in the AndroidX library.
We recommend using the AndroidX libraries in all new projects. You should also consider migrating existing projects to AndroidX as well.
这是官方 Migration guide 和相应的库等价物。
所有支持库都删除了 v4 v7 v12 v13 等标签,所有内容都重构到 androidx 包中。
它们本质上是相同的,但为了将来参考,androidx 将是我们应该在我们的应用程序中使用的库。
Android 本周(2018 年 5 月 14 日那一周)发布的 studio 3.2 canary 应该具有允许自动重构 androidx 包的工具。 google i/o 2018 年有关于此的公告。
AndroidX和Support libraries的区别之一是当你使用support libraries时,所有的support libraries必须是同一个版本,而在androidX中没有这样的东西。
另一件事是,在支持库中,大多数时候当你的应用程序需要一个组件时,你必须添加依赖项,而这些依赖项有很多你真的不需要的东西。但在 AndroidX 中,您只能添加所需的依赖项,不能添加更多。
如上文和 Migrating to AndroidX 中所述,您可以轻松迁移到 AS:
With Android Studio 3.2 and higher, you can quickly migrate an existing project to use AndroidX by selecting Refactor > Migrate to AndroidX from the menu bar.
关于差异(TLDR:没有损伤,强调我的)
AndroidX maps the original support library API packages into the androidx namespace. Only the package and Maven artifact names changed; class, method, and field names did not change.
这可能有帮助,
有以下几点不同:
根据当前的命名约定,尚不清楚哪些软件包与 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 点的扩展,另一个重要的变化是 AndroidX 工件将独立更新,因此您将能够更新您的个人 AndroidX 库项目,而不是必须一次更改每个依赖项。那些令人沮丧的“所有 com.android.support 库必须使用完全相同的版本规范”消息应该成为过去!