Android 架构组件:Gradle 依赖版本同步错误
Android Architecture Components: Gradle sync error for dependency version
我正在尝试将 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 dependency 'android.arch.lifecycle:runtime' has different version for the compile (1.0.0) and runtime (1.1.1) classpath. You should manually set the same version via DependencyResolution
删除第一行 (extensions
) 修复了问题,表明错误来自那里,但我不明白为什么。
显然是 support-v4
引起了冲突。对于这个问题,Gradle 依赖任务没有正常工作,但对于遇到这个问题的任何其他人:
./gradlew :app:dependencies
将显示您的依赖项使用的子依赖项。搜索此命令的输出(将 app
更改为您的模块名称)以查找导致冲突的依赖项。
在您的主 build.gradle
文件中
allprojects {
...
configurations {
all {
resolutionStrategy {
force "android.arch.lifecycle:runtime:1.1.1"
}
}
}
}
这将强制执行版本 1.1.1
正如@RedBassett 提到的那样,支持库依赖于此轻量级导入(运行时库),如 android developers documentation 所述。
这是 android.arch.lifecycle:runtime:1.0.0 由于内部 api(传递)导入而在依赖树中传播,所以在我的例子中我只需要包括扩展库作为 "api" 而不是 "implementation" 以便它将其版本覆盖到最高 (1.1.1)。
总之,改变
implementation "android.arch.lifecycle:extensions:1.1.1"
到
api "android.arch.lifecycle:extensions:1.1.1"
@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"
此外,您必须在每个导入的模块中添加此排除项。
我用 ./gradlew :app:dependencies
搜索了所有依赖项,正如@RedBassett 提到的那样。我注意到 Gradle 抱怨的 android.arch.core:runtime
版本不兼容源于我的 com.android.support:appcompat-v7
版本,所以我将该版本更新到最新版本并且一切正常。
我正在尝试将 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 dependency 'android.arch.lifecycle:runtime' has different version for the compile (1.0.0) and runtime (1.1.1) classpath. You should manually set the same version via DependencyResolution
删除第一行 (extensions
) 修复了问题,表明错误来自那里,但我不明白为什么。
显然是 support-v4
引起了冲突。对于这个问题,Gradle 依赖任务没有正常工作,但对于遇到这个问题的任何其他人:
./gradlew :app:dependencies
将显示您的依赖项使用的子依赖项。搜索此命令的输出(将 app
更改为您的模块名称)以查找导致冲突的依赖项。
在您的主 build.gradle
文件中
allprojects {
...
configurations {
all {
resolutionStrategy {
force "android.arch.lifecycle:runtime:1.1.1"
}
}
}
}
这将强制执行版本 1.1.1
正如@RedBassett 提到的那样,支持库依赖于此轻量级导入(运行时库),如 android developers documentation 所述。
这是 android.arch.lifecycle:runtime:1.0.0 由于内部 api(传递)导入而在依赖树中传播,所以在我的例子中我只需要包括扩展库作为 "api" 而不是 "implementation" 以便它将其版本覆盖到最高 (1.1.1)。
总之,改变
implementation "android.arch.lifecycle:extensions:1.1.1"
到
api "android.arch.lifecycle:extensions:1.1.1"
@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"
此外,您必须在每个导入的模块中添加此排除项。
我用 ./gradlew :app:dependencies
搜索了所有依赖项,正如@RedBassett 提到的那样。我注意到 Gradle 抱怨的 android.arch.core:runtime
版本不兼容源于我的 com.android.support:appcompat-v7
版本,所以我将该版本更新到最新版本并且一切正常。