Gradle构建错误 - 程序类型已经存在

3

我正在尝试构建一个包含两个模块的Android项目,一个是应用程序,另一个是库。这两个模块都在各自的libs文件夹中包含了gson-2.8.5.jar文件。当我部署应用程序时,在构建过程中会失败,并显示以下错误消息。

Program type already present: com.google.gson.FieldNamingPolicy$6
Message{kind=ERROR, text=Program type already present: com.google.gson.FieldNamingPolicy$6, sources=[Unknown source file], tool name=Optional.of(D8)}

然而,我通过用gradle的(implementation 'com.google.code.gson:gson:2.8.5')替换硬提供的.jar文件依赖项来测试我的设置,并且它运行良好。但是,由于以后我将使用Android.mk文件构建整个项目,因此必须使用libs文件夹中的jar文件,因此不能依赖于gradle注入的依赖项。

我搜索了关于这个错误的信息,但不幸的是没有找到任何有用的结果。希望有人知道如何解决这个问题。


请尝试这个:https://dev59.com/56zka4cB1Zd3GeqP-Y1T - Anubhav Gupta
@AnubhavGupta 正如我所说,我需要使用libs文件夹中的gson,因此引用的解决方案对我无效,因为它依赖于gradle注入的依赖项。我尝试从implementation project中排除gson,但没有成功。 - waqaslam
好的,我明白了 @waqaslam - Anubhav Gupta
2个回答

2

明白了,看起来我需要将我的包含模块中的传递属性标记为false才能解决问题。

之前:

implementation project(path: ':myLib')

修复后:

implementation project(path: ':myLib', transitive: false)

0

我在使用该库时也遇到了同样的问题:

implementation project(':library')
debugImplementation project(':library')
releaseImplementation 'com.library:1.0.0'

使用

./gradlew project:assembleRelease

出现错误。

解决方案: 应该删除implementation project(':library')


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接