Java Jetpack导航-添加nav_graph.xml时如何处理依赖项警告?

Java Jetpack导航-添加nav_graph.xml时如何处理依赖项警告?,java,android,android-room,android-architecture-navigation,android-navigation-editor,Java,Android,Android Room,Android Architecture Navigation,Android Navigation Editor,我想使用android jetpack的新导航库。当我想将导航XML添加到我的项目中时,我遇到了一个错误,错误是: 此操作需要库 导航:导航片段:+, 导航:导航ui:+ 问题:发现现有项目依赖项中存在不一致。 以下版本之间的版本不兼容: -android.arch.persistence.room:runtime:1.1.1和: -支持:appcompat-v7:27.1.1 对于依赖项: -支持:支持注释:26.1.0与: -支持:支持注释:27.1.1 添加这些库后,项目可能无法编译。你愿

我想使用android jetpack的新导航库。当我想将导航XML添加到我的项目中时,我遇到了一个错误,错误是:

此操作需要库 导航:导航片段:+, 导航:导航ui:+

问题:发现现有项目依赖项中存在不一致。 以下版本之间的版本不兼容: -android.arch.persistence.room:runtime:1.1.1和: -支持:appcompat-v7:27.1.1

对于依赖项: -支持:支持注释:26.1.0与: -支持:支持注释: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) 对话框不正确。当前的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不会导致其他与导航行为无关的更改。

这有两个部分:

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不会导致其他与导航行为无关的更改