Android:两个依赖项,每个依赖于相同的组件,触发DexArchiveMergerException

时间:2018-04-24 18:52:28

标签: android gradle dependencies dex

我的情况是我的项目由两个不同的库组成,这些库显然依赖于同一个组件:

客户端应用的gradle.build:

android {
...
}

dependencies {
...
implementation <dependency # 1>
implementation <dependency # 2>
...
}

我看到的错误:

org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'.

有问题的Android问题:

Program type already present: <package name>.<Component>

我们最近对其中一个依赖项进行了gradle更改,希望消除此错误:

build.gradle - 依赖关系#1

android {
...
}

dependencies {
...
api <dependency # 1>
api <dependency # 2>
...
}

但这种变化显然对结果没有影响。

我们启用了multidex。该属性对结果也没有影响。

我甚至将这段代码添加到我的客户端应用程序的gradle文件中:

configurations {
    runtime.exclude group: "<package name>", module: "<problem module>"
}

此处提供的示例:https://docs.gradle.org/current/userguide/dependency_types.html

我开始选择低价。

是否可以对一个,多个或所有gradle文件进行gradle配置更改以阻止此操作?如果是这样,我有什么选择?

1 个答案:

答案 0 :(得分:0)

如果单个模块的两个不同依赖项中存在依赖关系,以便存在相同的包名称,则可以忘记构建客户端应用程序。例如:

Dependency # 1 -> classes.jar -> <some package name> -> Component
Dependency # 2 -> classes.jar -> <THE SAME package name> -> Component

如果您有权修改这两个库,您将被迫更改其中一个库的包名。没有办法解决它,没有办法解决它。