我正在阅读关于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提供了几个不同的库集。一个叫Android支持库,另一个叫AndroidX。选择“使用android。”* artifacts”表示我们想要使用AndroidX。

其他回答

只是从我的角度对所有可用的答案进行了一些补充

需要AndroidX

正如@KhemRaj的惊人回答所说,

根据目前的命名惯例,还不清楚哪些包与Android操作系统捆绑,哪些包与应用程序的APK (Android Package Kit)捆绑。为了消除这种困惑,所有未捆绑的库将被转移到AndroidX的AndroidX上。*命名空间,而android。*包层次结构将保留给Android操作系统附带的包。

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

另一个重要的变化是AndroidX构件将独立更新,因此您可以在项目中更新单个AndroidX库,而不必一次更改每个依赖项。那些令人沮丧的“所有com.android.support库必须使用完全相同的版本规范”消息应该成为过去!

我是从这个Android开发峰会的视频中了解AndroidX的。总结是-

No more support library: The android support library will be never maintained by Google under the support library namespace. So if you want to find fixes of a bug in support library you must have to migrate your project in AndroidX Better package management: For standardized and independent versioning.Because previous support library versioning was too confusing. It will release you the pain of “All com.android.support libraries must use the exact same version specification” message. Other Good libraries have migrated to AndroidX: Google play services, Firebase, Mockito 2, etc are migrated to AndroidX. New libraries will be published using AndroidX artifact: All the libraries will be in the AndroidX namespace like Android Jetpack

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

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

AndroidX是一个开源项目,Android团队使用它在Jetpack中开发、测试、打包、版本和发布库。

经过几个小时的努力,我通过在app/build.gradle中包含以下内容来解决这个问题:

android {
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

把这些标志放在gradle.properties中

android.enableJetifier=true
android.useAndroidX=true

Changes in gradle:

implementation 'androidx.appcompat:appcompat:1.0.2'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'com.google.android.material:material:1.1.0-alpha04'

当在Android studio上迁移时,app/gradle文件会自动更新标准库中的修正库实现

参考网址:https://developer.android.com/jetpack/androidx/migrate