【问题标题】:Gradle Build Error - Program type already presentGradle 构建错误 - 程序类型已存在
【发布时间】:2018-09-14 15:42:58
【问题描述】:

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

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)}

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

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

【问题讨论】:

  • @AnubhavGupta 正如我所说,我需要使用 libs 文件夹中的 gson,因此引用的解决方案对我不起作用,因为它依赖于 gradle 注入的依赖项。我尝试从 实施项目 中排除 gson,但没有成功
  • 好的,知道了@waqaslam

标签: java android gradle build gson


【解决方案1】:

解决了。似乎我必须将 transitive 属性标记为 false 用于我包含的模块。

之前:

implementation project(path: ':myLib')

之后(修复):

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

【讨论】:

    【解决方案2】:

    图书馆也有同样的问题:

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

    ./gradlew project:assembleRelease
    

    给出错误。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-26
      • 2021-11-26
      • 2018-11-26
      • 1970-01-01
      • 2019-05-27
      • 2018-10-31
      • 1970-01-01
      • 2019-07-25
      相关资源
      最近更新 更多