Почему Androidx импортируется, когда я не брал необходимые зависимости? - PullRequest
0 голосов
/ 25 марта 2019

Я использовал библиотеку AppCompat в своем приложении для Android.Недавно я решил перейти на компоненты AndroidX.Так что в моем gradle.properties я взял это:

android.useAndroidX=true
android.enableJetifier=true

И взял зависимость appcompat в build.gradle файле:

implementation 'androidx.appcompat:appcompat:1.0.0'

Но странно, что я могу использовать жизненный цикл, viewmodelи т. д. Jetpack библиотека без импорта там больше зависимостей.Есть ли какая-то скрытая функция, которую я не знаю, которая позволяет мне использовать эти библиотеки?И даже когда я удаляю «implementation 'androidx.appcompat:appcompat:1.0.0'» из файла Gradle, он работает без каких-либо ошибок компиляции.Теперь я запутался, кто-нибудь может дать мне вескую причину этого?Я перестроил, удалил кеш и даже несколько раз перезагружал свой ПК, но он работает.Как это возможно?Кстати мой файл 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 Ответ

1 голос
/ 16 мая 2019

По существу, Компоненты архитектуры встроены в Android SDK независимо от того, используете вы его или нет.Это потому, что он предоставляет вам поддержку Lifecycle из Activity/Fragment из компонента SDK из коробки, и поэтому вы можете видеть библиотеки Jetpack, такие как viewmodel & lifecycle .

Таким образом, импорт артефакта androidx.appcompat:appcompat разрешит его внутренние зависимости viewmodel & жизненного цикла (т.е. из-за AppCompatActivity и других компонентов, зависящих от него) и является причиной, по которой вы можете его увидеть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...