【发布时间】:2018-10-10 16:27:22
【问题描述】:
我已强制在我的 gradle 中下载此版本的 jsr305,如下所示:
resolutionStrategy.force 'com.google.code.findbugs:jsr305:3.0.1'
尽管如此,我发现在 gradle 同步期间,旧版本(2.0.1 和 1.3.9)仍在下载:
我收到如下编译错误:
com.android.build.api.transform.TransformException:
Error while generating the main dex list.
com.android.tools.r8.errors.CompilationError: Program type already present: javax.annotation.CheckForNull
Program type already present: javax.annotation.CheckForNull
我进行了模块级别的搜索,发现CheckForNull.java 出现在多个地方
jsr305/2.0.1
jsr305/3.0.1
jsr305/1.3.9
我已尝试删除 ./gradle 文件夹并重新同步项目。我看到gradle仍然下载之前的jsr305版本。
这些是我在 gradle 中的依赖项:
implementation "com.facebook.react:react-native:${versions.reactNative}"
implementation ("com.google.code.findbugs:annotations:3.0.1") {
exclude group: 'net.jcip', module: 'jcip-annotations'
}
我的问题:
- 为什么 Gradle 还在下载旧版本的 jsr305?
- 尽管 jsr305 版本已得到解决,但为什么 multidex 会抛出该错误?
创建了一个测试项目,该项目显示了即使在强制解决之后仍会下载旧 lib 版本的行为: https://github.com/vineyugave/scratchpad
您还可以在此处查看 gradle 扫描: https://scans.gradle.com/s/tzrobr2zuar3c/dependencies?dependencies=jsr&expandAll
【问题讨论】:
-
能否添加来自
build.gradle的依赖项? -
按要求在原始帖子中添加了依赖项。@MartinZeitler
-
... 完整的
dependencies {}和resolutionStrategy而不仅仅是一个小小的 sn-p。否则这个问题是不可能正确回答的;最好的情况是因为“太宽泛”或“不清楚你在问什么”而关闭它。 -
整个依赖列表由一些我无法发布的私有库和代码组成。你到底在寻找什么?
-
寻找我可以简单地粘贴到
build.gradle的代码,这足以重现该问题......那么我很容易回答这两个问题。
标签: java android gradle findbugs