Android架构组件:依赖版本的Gradle同步错误

Red*_*ett 19 android gradle kotlin android-architecture-components

我正在尝试将ViewModel和LiveData添加到Kotlin应用程序中.我将以下依赖项添加到我的模块中build.gradle:

implementation "android.arch.lifecycle:extensions:1.1.1"
kapt "android.arch.lifecycle:compiler:1.1.1"
testImplementation "android.arch.core:core-testing:1.1.1"
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

Android依赖项'android.arch.lifecycle:runtime'具有不同版本的编译(1.0.0)和运行时(1.1.1)类路径.您应该通过DependencyResolution手动设置相同的版本

删除第一行(extensions)修复了问题,表明错误来自那里,但我无法弄清楚原因.

Rub*_*era 49

正如@RedBassett所提到的,支持库依赖于这个轻量级导入(运行时库),如android开发人员文档中所述.

这是android.arch.lifecycle:runtime:1.0.0由于内部api(传递)导入而在依赖关系树中传播,所以在我的情况下我只需要将扩展​​库包含为"api"而不是"实现"以便它将其版本覆盖到最高(1.1.1).

总之,改变

implementation "android.arch.lifecycle:extensions:1.1.1"
Run Code Online (Sandbox Code Playgroud)

api "android.arch.lifecycle:extensions:1.1.1"
Run Code Online (Sandbox Code Playgroud)

  • 救生员,不知道为什么这个没有记录在某个地方 (2认同)

ser*_*nka 24

在您的主build.gradle文件中

allprojects {
    ...

    configurations {
        all {
            resolutionStrategy {
                force "android.arch.lifecycle:runtime:1.1.1"
            }
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

这将强制执行版本 1.1.1


Red*_*ett 7

显然support-v4是造成了冲突.对于此问题,Gradle依赖项任务无法正常工作,但对于遇到此问题的任何其他人:

./gradlew :app:dependencies将显示依赖项使用的子依赖项.搜索此命令的输出(更改app模块名称)以查找导致冲突的依赖项.

  • 这也是我的情况,设置上面的resolutionStrategy解决了这个问题. (3认同)