Android 架构组件:依赖版本的 Gradle 同步错误
Posted
技术标签:
【中文标题】Android 架构组件:依赖版本的 Gradle 同步错误【英文标题】:Android Architecture Components: Gradle sync error for dependency version 【发布时间】:2018-10-05 08:56:40 【问题描述】:我正在尝试将 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"
我收到以下错误:
Android 依赖 'android.arch.lifecycle:runtime' 对于编译 (1.0.0) 和运行时 (1.1.1) 类路径有不同的版本。您应该通过 DependencyResolution 手动设置相同的版本
删除第一行 (extensions
) 解决了这个问题,表明错误来自那里,但我不知道为什么。
【问题讨论】:
将 ` implementation "android.arch.lifecycle:runtime:1.1.1"` 添加到您的依赖项中 很遗憾,不,这并不能解决问题。 依赖解析强制使用版本gist.github.com/cr7pt0gr4ph7/6cd6339eabc2056bc3e7 【参考方案1】:正如@RedBassett 提到的,支持库依赖于这个轻量级导入(运行时库),如android developers documentation 所述。
这是,由于内部 api(传递)导入,android.arch.lifecycle:runtime:1.0.0 在依赖树中传播,所以在我的情况下,我只需将扩展库包含为“api”而不是“实现”,以便它将其版本覆盖到最高版本(1.1.1)。
总之,改变
implementation "android.arch.lifecycle:extensions:1.1.1"
到
api "android.arch.lifecycle:extensions:1.1.1"
【讨论】:
救命稻草,不知道为什么在某些地方没有记录 这里一样(另一个救生员)。 在更改后的构建时间方面,'api' 的效率低于 'implementation'【参考方案2】:在您的主要build.gradle
文件中
allprojects
...
configurations
all
resolutionStrategy
force "android.arch.lifecycle:runtime:1.1.1"
这将强制执行版本1.1.1
【讨论】:
这对我有用。我无法弄清楚较低的依赖项在哪里,因为它是旧库中的大多数 Lilley。【参考方案3】:显然support-v4
引起了冲突。在这个问题的情况下,Gradle 依赖任务无法正常工作,但对于遇到此问题的其他任何人:
./gradlew :app:dependencies
将显示您的依赖项使用的子依赖项。搜索此命令的输出(将 app
更改为您的模块名称)以查找导致冲突的依赖项。
【讨论】:
我也是这种情况,设置上面的 resolutionStrategy 解决了问题。【参考方案4】:@RedBassett 是对的。但是,除了 android.arch.lifecycle
相关的子依赖项之外,我仍然遇到一些问题。
就我而言,冲突是在com.android.support:appcompat-v7:27.1.1
中引起的。
这是我的 gradle 依赖项在排除后的样子。
implementation ('com.android.support:appcompat-v7:27.1.1')
exclude group: 'android.arch.lifecycle'
api "android.arch.lifecycle:runtime:1.1.1"
kapt "android.arch.persistence.room:compiler:1.1.1"
此外,您必须在每个导入的模块中添加此排除。
【讨论】:
【参考方案5】:我用@RedBassett 提到的./gradlew :app:dependencies
搜索了所有依赖项。我注意到 Gradle 抱怨的 android.arch.core:runtime
不兼容版本源于我的 com.android.support:appcompat-v7
版本,所以我刚刚将该版本更新为最新版本,一切正常。
【讨论】:
以上是关于Android 架构组件:依赖版本的 Gradle 同步错误的主要内容,如果未能解决你的问题,请参考以下文章
Android Gradle 插件组件化中的 Gradle 构建脚本实现 ① ( 组件化简介 | 创建组件化应用 | 依赖库模块 / 应用模块 切换设置 )
Android Gradle 插件Android 依赖管理 ⑤ ( Gradle 依赖优化 | 命令行查看依赖模块 | 依赖冲突问题 | 依赖传递冲突 | 分库冲突 | 依赖分组不同导致冲突 )
Android Gradle 插件Gradle 依赖管理 ⑤ ( dependencies 依赖项拆分 | 依赖组 | 依赖名称 | 依赖版本号 | 动态指定依赖版本号 | 使用命令行查看模块 )