如果不考虑必要的依赖关系,为什么要导入Androidx?

时间:2019-03-25 05:51:57

标签: android androidx

我在Android应用中使用AppCompat库。最近,我决定迁移到AndroidX组件。因此,在我的gradle.properties中,我采取了以下措施:

android.useAndroidX=true
android.enableJetifier=true

并采用build.gradle文件中的appcompat依赖项:

implementation 'androidx.appcompat:appcompat:1.0.0'

但是奇怪的是,我可以使用生命周期,viewmodel等jetpack库而无需在此导入更多依赖项。有我不知道的隐藏功能允许我使用那些库吗?即使我从gradle文件中删除了“ implementation 'androidx.appcompat:appcompat:1.0.0'”,它也可以正常工作而不会出现任何错误。现在我很困惑,有人可以给我一个合理的理由吗?我已经重建,删除了缓存,甚至我已经重新启动了PC几次,但是它可以工作。这怎么可能?顺便说一句,我的根级别build.gradle文件具有以下内容:

buildscript {

    repositories {
        google()
        jcenter()
        maven {
            url "http://dl.bintray.com/glomadrian/maven"

        }

    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.3.2'
        classpath 'com.google.gms:google-services:4.2.0'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        google()
        jcenter()
        maven {
            url "http://dl.bintray.com/glomadrian/maven"
        }

    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

1 个答案:

答案 0 :(得分:1)

基本上,架构组件本身都集成在 Android SDK 中,无论您是否使用它。这是因为它为您提供了开箱即用的SDK组件对Activity/Fragment Lifecycle 的支持,这就是为什么您能够看到诸如 viewmodel&lifecycle 。

因此,导入androidx.appcompat:appcompat工件将解决它对viewmodel和生命周期的内部依赖(即由于AppCompatActivity和其他组件所依赖),这就是您能够做到这一点的原因看到它。