【问题标题】:Jetpack Navigation - How to handle dependency warning when adding nav_graph.xml?Jetpack Navigation - 添加 nav_graph.xml 时如何处理依赖警告?
【发布时间】:2019-05-12 19:28:01
【问题描述】:

我想使用android jetpack 的新导航库。当我想向我的项目添加导航 XML 时,我收到一条错误消息:

此操作需要库 android.arch.navigation:navigation-fragment:+, 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"
}

【问题讨论】:

    标签: java android android-room android-architecture-navigation android-navigation-editor


    【解决方案1】:

    这有两个部分:

    1) 对话框不正确。当前的 Android Studio 查看包含在 POM 文件中的测试依赖项,但不会影响您的应用程序(测试依赖项仅在内部用于测试库本身的测试)。这在 Android Studio 3.5 Beta 1 中已部分修复。

    2) 添加 Navigation 依赖项时,您的应用将无法编译,因为您使用了 compileSdkVersion 27,而 android.arch.navigation 依赖项依赖于 Support Library 的 28.0.0 版本,这要求您使用 API 28 进行编译。

    如果您修复您的应用以使用compileSdkVersion 28,那么您可以放心地忽略对话框警告并将导航添加到您的项目。当然,您可以在添加 Navigation 之前将 Support Library 升级到 28.0.0,这将确保不会因从 27.1.1 升级到 28.0.0 而导致其他与 Navigation 行为无关的变化。

    【讨论】:

      猜你喜欢
      • 2022-11-04
      • 2022-08-19
      • 2021-10-27
      • 1970-01-01
      • 2021-07-12
      • 2020-09-22
      • 2012-12-28
      • 2015-02-25
      • 1970-01-01
      相关资源
      最近更新 更多