Jetpack Navigation - Как обрабатывать предупреждение о зависимостях при добавлении nav_graph.xml? - PullRequest
1 голос
/ 12 мая 2019

Я хочу использовать новую навигационную библиотеку Android Jetpack.Поскольку я хотел добавить навигационный XML в свой проект, я получил сообщение об ошибке:

Для этой операции требуются библиотеки android.arch.navigation: navigation-фрагмент: +, android.arch.navigation: navigation-ui: +.

Проблема: обнаружены несоответствия в существующих зависимостях проекта.Несовместимость версий между: - android.arch.persistence.room:runtime:1.1.1 и: - com.android.support:appcompat-v7:27.1.1

С зависимостью: - com.android.support: support-annotations: 26.1.0 против: - com.android.support:support-annotations:27.1.1

Проект может не скомпилироваться после добавления этих библиотек.Хотели бы вы добавить их в любом случае?

Я нажал "Отмена", так как я не знал, каковы будут последствия для моего маленького проекта.Почему это происходит?Комната не совместима с навигационной библиотекой?Рискну ли я, что мой проект не будет компилироваться после их добавления?Должен ли я сохранить файл Gradle и просто попробовать?

Я был бы очень признателен за разъяснения.Спасибо:)

Мой файл Gradle:

    apply plugin: 'com.android.application'

android {
    compileSdkVersion 27
    defaultConfig {
        applicationId "de.test"
        minSdkVersion 21
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:27.1.1'
    implementation 'com.android.support:design:27.1.1'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
    implementation 'com.android.support:recyclerview-v7:27.1.1'

    // Room components
    implementation "android.arch.persistence.room:runtime:$rootProject.roomVersion"
    annotationProcessor "android.arch.persistence.room:compiler:$rootProject.roomVersion"
    androidTestImplementation "android.arch.persistence.room:testing:$rootProject.roomVersion"

    // Lifecycle components
    implementation "android.arch.lifecycle:extensions:$rootProject.archLifecycleVersion"
    annotationProcessor "android.arch.lifecycle:compiler:$rootProject.archLifecycleVersion"
}

1 Ответ

3 голосов
/ 12 мая 2019

Это две части:

1) Диалог неверный. Текущая версия Android Studio рассматривает тестовые зависимости, которые включены в файлы POM, но не влияют на ваше приложение (тестовые зависимости используются только внутри для тестов, тестирующих сами библиотеки). Это частично исправлено в Android Studio 3.5 Beta 1.

2) Ваше приложение не будет компилироваться при добавлении зависимостей навигации, потому что вы используете compileSdkVersion 27 и зависимости android.arch.navigation, зависит от версии 28.0.0 библиотеки поддержки, которая требует компиляции с API 28.

Если вы исправите свое приложение для использования compileSdkVersion 28, то вы можете спокойно проигнорировать предупреждение о диалоге и добавить навигацию в свой проект. Конечно, вы можете обновить свою библиотеку поддержки до 28.0.0 до добавления навигации, что обеспечит отсутствие других не связанных с изменением поведения навигации, вызванных обновлением с 27.1.1 до 28.0.0.

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