将所有库升级到androidx和最新版本的Firebase库后,我遇到了2个不同版本的Dagger Java文件的错误,错误消息中的链接不起作用。在步骤:app:checkDebugDuplicateClasses出现问题。我没有在代码中直接使用dagger,而是使用./gradlew app:dependencies,我发现com.google.android.gms:play-services-cast-framework:17.1.0使用com.google.dagger:dagger:2.22是什么,但没有有关1.2.2的信息。
Cause 1: java.util.concurrent.ExecutionException: java.lang.RuntimeException: java.lang.RuntimeException: Duplicate class dagger.Lazy found in modules dagger-1.2.2.jar (dagger-1.2.2.jar) and dagger-2.22.jar (com.google.dagger:dagger:2.22)
Duplicate class dagger.MembersInjector found in modules dagger-1.2.2.jar (dagger-1.2.2.jar) and dagger-2.22.jar (com.google.dagger:dagger:2.22)
Duplicate class dagger.Module found in modules dagger-1.2.2.jar (dagger-1.2.2.jar) and dagger-2.22.jar (com.google.dagger:dagger:2.22)
Duplicate class dagger.Provides found in modules dagger-1.2.2.jar (dagger-1.2.2.jar) and dagger-2.22.jar (com.google.dagger:dagger:2.22)
Duplicate class javax.inject.Inject found in modules javax.inject-1.jar (javax.inject-1.jar) and javax.inject-1.jar (javax.inject:javax.inject:1)
Duplicate class javax.inject.Named found in modules javax.inject-1.jar (javax.inject-1.jar) and javax.inject-1.jar (javax.inject:javax.inject:1)
Duplicate class javax.inject.Provider found in modules javax.inject-1.jar (javax.inject-1.jar) and javax.inject-1.jar (javax.inject:javax.inject:1)
Duplicate class javax.inject.Qualifier found in modules javax.inject-1.jar (javax.inject-1.jar) and javax.inject-1.jar (javax.inject:javax.inject:1)
Duplicate class javax.inject.Scope found in modules javax.inject-1.jar (javax.inject-1.jar) and javax.inject-1.jar (javax.inject:javax.inject:1)
Duplicate class javax.inject.Singleton found in modules javax.inject-1.jar (javax.inject-1.jar) and javax.inject-1.jar (javax.inject:javax.inject:1)
Go to the documentation to learn how to Fix dependency resolution errors.
答案 0 :(得分:5)
最简单的方法是分析依赖关系。
在控制台中运行:
./gradlew -q dependencies app:dependencies
在控制台中接收到依赖项列表后,转到Analyze
部分(在Solution #2
下面)。
在app/build.gradle
(带有compileSdkVersion
,targetSdkVersion
或buildTypes
的位置)中,在顶部添加:
apply plugin: 'project-report'
其中之一附近:
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
在顶部。
只需从控制台运行:
./gradlew htmlDependencyReport
或从Android Studio
Tasks > other > htmlDependencyReport
在控制台中,您将找到URL:
./gradlew htmlDependencyReport
> Task :app:htmlDependencyReport
See the report at: file:///Users/user_name/your_path/project_name/app/build/reports/project/dependencies/index.html
然后转到project ':app'
要展开所有这些代码,可以在开发者控制台中输入以下代码:
$('#dependencies').html(function(index, html) {
return html.split('style="display: none;"')
.join('style="display: block;"')
.split('<h3 class="closed">')
.join('<h3>')
});
您要搜索的词组dagger:1
或在控制台中:
找到报表库名称,然后从该导入中仅找到exclude group
。
在您的build.gradle
(具有所有依赖项)中,修改“问题”库,但不包括匕首v1。
例如:
implementation("some.old.library.using.dagger1:1.0.0") {
exclude group: 'com.squareup.dagger', module: 'dagger'
}