我正在阅读关于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
中打包新的支持库。我们正在推出一种新的软件包结构,以便更清楚哪些软件包与Android操作系统捆绑在一起,并与您的应用程序的APK一起打包。展望未来,android。*包层次结构将保留给随操作系统提供的Android包。其他软件包将作为AndroidX库的一部分在新的androidx。*包层次结构中发布。
AndroidX是重新设计的库,使包名更清晰。所以从现在开始,android层次结构将仅用于android默认类,它附带android操作系统。和其他库/依赖项将成为androidx的一部分(更有意义)。所以从现在起所有的新开发都将在androidx中更新。
com.android.support。**:androidx。 com.android.support:appcompat-v7:androidx.appcompat:appcompat com.android.support:recyclerview-v7:androidx.recyclerview:recyclelerview com.android.support:design:com.google.android.material:material
Complete Artifact mappings for AndroidX packages
以前,support library
use SDK版本但AndroidX使用Semantic-version
。它将从28.0.0→1.0.0重新版本。
在Android Studio 3。2(2018年9月)中,可以直接选择将现有项目迁移到AndroidX
。这将自动折射所有包。
在迁移之前,强烈建议您备份项目。
Existing project
New project
把这些标志放在你的gradle.properties
android.enableJetifier=true
android.useAndroidX=true
检查@Library mappings for equal AndroidX package。
检查@Official page of Migrate to AndroidX
来自Android Support Revision 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
androidx是一种新的软件包结构,可以更清楚地将哪些软件包与Android操作系统捆绑在一起,并与您的应用程序的APK一起打包。展望未来,android。*包层次结构将保留给随操作系统提供的Android包;其他包将在新的androidx。*包层次结构中发布。
重新设计的包结构旨在鼓励更小,更集中的库。您可以找到有关工件映射here的详细信息。
当支持的最小SDK级别为14时,有一些名为“v7”的支持库(包含用于向后兼容的组件和包),新命名清楚地理解了与平台捆绑的API与使用的应用程序开发人员库之间的划分在不同版本的Android上。您可以参考official announcement了解更多详情。
AndroidX是Android团队用于在Jetpack中开发,测试,打包,版本和发布库的开源项目。
AndroidX是对原版Android Support Library的重大改进。与支持库一样,AndroidX与Android操作系统分开提供,并提供跨Android版本的向后兼容性。 AndroidX通过提供功能奇偶校验和新库完全取代了支持库。
AndroidX包括以下功能:
Semantic Versioning
,从版本1.0.0开始。您可以单独更新项目中的AndroidX库。使用AndroidX
请参阅Migrating to AndroidX以了解如何迁移现有项目。
如果要在新项目中使用AndroidX,则需要将compile SDK设置为Android 9.0(API级别28)或更高版本,并在gradle.properties
文件中将以下两个Android Gradle插件标志设置为true。
android.useAndroidX
:设置为true时,Android插件使用相应的AndroidX库而不是支持库。如果未指定,则默认情况下该标志为false。android.enableJetifier
:当设置为true时,Android插件会自动迁移现有的第三方库,通过重写其二进制文件来使用AndroidX。如果未指定,则默认情况下该标志为false。对于神器映射,请参阅this
它与AppCompat版本的支持相同,但它具有较少的v4和v7版本的混乱,因此使用android XML元素的不同组件有很大帮助。
这篇文章Android Jetpack: What do the recent announcements mean for Android’s Support Library?解释得很好
今天,许多人认为支持库是Android应用程序开发的重要组成部分,到了Google Play商店中99%的应用程序使用它。但是,随着支持库的增长,围绕库的命名约定的不一致性已经出现。
最初,每个包的名称表示该包支持的最低API级别,例如support-v4。但是,支持库的26.0.0版将最小API增加到14,因此今天许多软件包名称与最低支持的API级别无关。当support-v4和support-v7软件包都具有14的最小API时,很容易看出为什么人们会感到困惑!
为了消除这种困惑,Google目前正在将支持库重构为新的Android扩展库(AndroidX)包结构。 AndroidX将具有简化的软件包名称,以及更好地反映每个软件包内容及其支持的API级别的Maven groupIds和artifactIds。
根据当前的命名惯例,还不清楚哪些软件包与Android操作系统捆绑在一起,哪些软件包与应用程序的APK(Android软件包套件)打包在一起。为了消除这种混乱,所有非捆绑库将被移动到AndroidX的androidx。*命名空间,而android。*包层次结构将被保留用于随Android操作系统一起提供的包。