Android: 两个依赖项,每个依赖项都依赖于同一个组件,触发 DexArchiveMergerException
Android: Two Dependencies, Each One Depends on Same Component, Triggers DexArchiveMergerException
我的项目包含两个不同的库,它们显然依赖于同一组件:
客户端应用的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 配置更改以阻止这种情况?如果可以,我有哪些选择?
如果同一个模块的两个不同的依赖存在同一个包名的依赖,那么构建客户端应用就可以了。例如:
Dependency # 1 -> classes.jar -> <some package name> -> Component
Dependency # 2 -> classes.jar -> <THE SAME package name> -> Component
如果您有权修改这两个库,您将被迫更改其中一个的包名。无路可逃,无路可逃
我的项目包含两个不同的库,它们显然依赖于同一组件:
客户端应用的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 配置更改以阻止这种情况?如果可以,我有哪些选择?
如果同一个模块的两个不同的依赖存在同一个包名的依赖,那么构建客户端应用就可以了。例如:
Dependency # 1 -> classes.jar -> <some package name> -> Component
Dependency # 2 -> classes.jar -> <THE SAME package name> -> Component
如果您有权修改这两个库,您将被迫更改其中一个的包名。无路可逃,无路可逃