模块dagger-1.2.2.jar和dagger-2.22.jar

时间:2019-09-29 14:16:57

标签: android gradle dagger

将所有库升级到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.

1 个答案:

答案 0 :(得分:5)

最简单的方法是分析依赖关系。

解决方案#1(仅控制台)

在控制台中运行:

./gradlew -q dependencies app:dependencies

enter image description here

在控制台中接收到依赖项列表后,转到Analyze部分(在Solution #2下面)。


解决方案#2(生成html)

1)添加插件以生成报告

app/build.gradle(带有compileSdkVersiontargetSdkVersionbuildTypes的位置)中,在顶部添加:

apply plugin: 'project-report'

其中之一附近:

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'

在顶部。

2)生成报告

只需从控制台运行:

 ./gradlew htmlDependencyReport

或从Android Studio

Tasks > other > htmlDependencyReport

enter image description here

3)打开报告

在控制台中,您将找到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'

enter image description here

4)分析报告

单击每个位置后,存在依赖关系: enter image description here

要展开所有这些代码,可以在开发者控制台中输入以下代码:

$('#dependencies').html(function(index, html) {
    return html.split('style="display: none;"')
               .join('style="display: block;"')
               .split('<h3 class="closed">')
               .join('<h3>')
});

分析

1)查找旧的依赖项

您要搜索的词组dagger:1

enter image description here

或在控制台中:

enter image description here

2)排除依赖项

找到报表库名称,然后从该导入中仅找到exclude group

在您的build.gradle(具有所有依赖项)中,修改“问题”库,但不包括匕首v1。

例如:

implementation("some.old.library.using.dagger1:1.0.0") {
    exclude group: 'com.squareup.dagger', module: 'dagger'
}