我正在阅读关于Android的一个房间库。我看到他们把android包改成了androidx。我不明白。有人能解释一下吗?

implementation "androidx.room:room-runtime:$room_version"
annotationProcessor "androidx.room:room-compiler:$room_version"

甚至这也是可用的android包。

implementation "android.arch.persistence.room:runtime:$room_version"
annotationProcessor "android.arch.persistence.room:compiler:$room_version"

为什么需要在androidx而不是android中打包新的支持库? 现有项目中的用例和影响因素。


当前回答

Androidx将在28.0.0之后取代支持库。您应该迁移您的项目来使用它。androidx使用语义版本控制。使用AndroidX不会被库名和包名中显示的版本所混淆。生活变得更容易

[AndroidX和支持兼容性]

其他回答

Androidx将在28.0.0之后取代支持库。您应该迁移您的项目来使用它。androidx使用语义版本控制。使用AndroidX不会被库名和包名中显示的版本所混淆。生活变得更容易

[AndroidX和支持兼容性]

它与AppCompat版本的支持相同,但它的v4和v7版本的混乱较少,因此使用android XML元素的不同组件有很大帮助。

Android提供了几个不同的库集。一个叫Android支持库,另一个叫AndroidX。选择“使用android。”* artifacts”表示我们想要使用AndroidX。

根据文档:

Androidx是新的包结构,使它更清楚哪些包 都是与Android操作系统捆绑的,哪些是打包的 你的应用的APK。展望未来,机器人。*包层次结构 将保留给随操作系统一起发布的Android包 系统;其他软件包将在新的androidx中发布。*包 层次结构。

重新设计的包结构是为了鼓励更小、更集中的库。您可以在这里找到有关工件映射的详细信息。

当支持的最小SDK级别为14时,有命名为“v7”的支持库(包含向后兼容的组件和包),新的命名清楚地理解了平台绑定的api和应用程序开发人员在不同版本的Android上使用的库之间的划分。详情请参考官方公告。

AndroidX - Android扩展库

来自AndroidX文档

我们正在推出一个新的包装结构,以使其更明确 这些软件包都是与Android操作系统捆绑在一起的 与你的应用的APK打包。展望未来,机器人。*包 层次结构将保留给附带的Android包 操作系统。其他软件包将在新的androidx.*中发布 包层次结构作为AndroidX库的一部分。

需要AndroidX

AndroidX是一个重新设计的库,使包的名称更清晰。所以从现在开始,android的层次结构将只适用于android默认类,这与android操作系统和其他库/依赖将是androidx的一部分(更有意义)。所以从现在开始,所有的新开发都将在androidx中更新。

com.android.support。**: androidx。 com.android。支持:appcompat-v7: androidx.appcompat:appcompat com.android。支持:recyclerview-v7: androidx.recyclerview:recyclerview com.android。支持:design: com.google.android.material:material

AndroidX包的完整工件映射

AndroidX使用语义版本

以前,支持库使用SDK版本,而AndroidX使用语义版本。它将从28.0.0→1.0.0进行还原。

如何迁移当前项目

在Android Studio 3.2(2018年9月)中,可以直接选择将现有项目迁移到AndroidX。这将自动重构所有包。

在迁移之前,强烈建议备份您的项目。

现有的项目

Android Studio >重构菜单>迁移到AndroidX… 它将分析并在底部打开折射窗口。接受要完成的更改。

新项目

把这些标志放在gradle.properties中

android.enableJetifier=true
android.useAndroidX=true

检查@Library映射是否有相等的AndroidX包。

查看“迁移到AndroidX”的官方页面

什么是Jetifier?

迁移的bug

如果你构建应用程序,并在迁移后发现一些错误,那么你需要修复这些小错误。你不会被困在那里,因为这很容易解决。 第三方库不会在目录中转换为AndroidX,但它们会在运行时由Jetifier转换,所以不用担心编译时错误,你的应用程序将完美运行。

支持28.0.0是最新版本?

从Android支持修订版28.0.0

这将是android.support下的最后一个特性发布 我们鼓励开发人员迁移到AndroidX 1.0.0

所以选择AndroidX,因为Android从现在开始只更新AndroidX包。

进一步的阅读

https://developer.android.com/topic/libraries/support-library/androidx-overview

https://android-developers.googleblog.com/2018/05/hello-world-androidx.html