【问题标题】:D8: Program type already present: org.apache.cordova.BuildHelperD8:程序类型已经存在:org.apache.cordova.BuildHelper
【发布时间】:2019-11-15 10:23:09
【问题描述】:

运行 $ ionic cordova build android 时构建失败。

尝试安装 npm 插件 cordova-android-support-gradle-release 但遇到了这个问题:https://github.com/dpa99c/cordova-android-support-gradle-release/issues/42

实际上我没有为此编写任何特定代码。

FAILURE:构建失败并出现异常。

  • 出了什么问题: 任务 ':app:transformDexArchiveWithDexMergerForDebug' 执行失败。

    com.android.build.api.transform.TransformException: java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: 合并 dex 档案时出错: 在https://developer.android.com/studio/build/dependencies#duplicate_classes 了解如何解决该问题。 程序类型已经存在:org.apache.cordova.BuildHelper

【问题讨论】:

  • 感谢@DaveAlden 的评论。我尝试使用 cordova-plugin-compat@1.2 并删除 .java 类,但没有一个选项起作用
  • @DaveAlden 似乎通过从 CordovaLib 中删除那些 .java 文件来编译它。您介意回复一下,以便我批准您的回答吗?
  • 我不想创建重复的答案或只是一个链接的答案 - 两者都被版主不赞成

标签: android cordova ionic-framework cordova-plugins


【解决方案1】:

谢谢!我还可以通过删除以下文件来解决此问题:

  • PermissionHelper.java
  • BuildHelper.java

在这个文件夹中:platforms ▸ android ▸ app ▸ src ▸ main ▸ java ▸ org ▸ apache

【讨论】:

    【解决方案2】:

    我通过从我的cordova 项目中删除cordova-plugin-compat 解决了这个问题,因为它已被弃用,并且该功能现在是cordova for android 的一部分。

    此插件已不再使用,因为此插件提供的功能现已包含在 cordova-android 6.3.0 中。您应该升级您的应用程序以使用此插件的 1.2.0 版本。它将根据您的应用使用的cordova-android版本检测是否需要该插件。

    【讨论】:

      【解决方案3】:

      我能够通过从 CordovaLib 子项目中删除那些重复的 .java 类来解决此问题。

      【讨论】:

      • 这让我找到了一个解决方案。我将 CordovaLib 指定为应用程序和模块的依赖项。我需要从模块中删除依赖项(应用程序已经依赖)
      • @sonyisda1 也许您可以发布答案?太棒了:)
      猜你喜欢
      • 1970-01-01
      • 2019-07-13
      • 1970-01-01
      • 2019-08-30
      • 2019-11-11
      • 2018-10-31
      • 2018-09-23
      • 2019-02-22
      • 1970-01-01
      相关资源
      最近更新 更多