Android: две зависимости, каждая из которых зависит от одного и того же компонента, вызывает DexArchiveMergerException - PullRequest
0 голосов
/ 24 апреля 2018

У меня есть ситуация, в которой мой проект состоит из двух разных библиотек, которые, очевидно, зависят от одного и того же компонента:

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>

Недавно мы внесли изменения в одну из этих зависимостей в надежде устранить эту ошибку:

build.gradle - зависимость # 1

android {
...
}

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

Но это изменение, очевидно, не влияет на результат.

У нас включен мультидекс. Это свойство также не влияет на результат.

Я даже дошел до добавления этого блока кода в файл gradle моего клиентского приложения:

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

за примеры, приведенные здесь: https://docs.gradle.org/current/userguide/dependency_types.html

У меня заканчиваются варианты.

Можно ли изменить конфигурацию gradle на один, несколько или все файлы gradle, чтобы положить этому конец? Если да, какие варианты у меня есть?

1 Ответ

0 голосов
/ 25 апреля 2018

Если существует зависимость в двух разных зависимостях одного модуля, так что существует одно и то же имя пакета, вы можете забыть о создании клиентского приложения. Например:

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

Если у вас есть доступ для изменения двух библиотек, вам придется изменить имя пакета одной из них. Там нет пути, нет выхода.

...