Android: сборка библиотеки Java не удалась из-за transformDexArchiveWithExternalLibsDexMergerForDebug Тип программы уже существует - PullRequest
0 голосов
/ 12 февраля 2019

Я пытаюсь скомпилировать Leshan Server Demo как библиотеку Java в Android Studio, потому что я хотел бы использовать его в приложении.

Когда я компилирую его, яУ меня есть одна библиотека, которая включена, которая определяет определенный класс, который также определяется другим классом, включенным в проект.Обе библиотеки необходимы.

Это мой файл gradle

apply plugin: 'java-library'

sourceCompatibility = "8"
targetCompatibility = "8"

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation 'org.slf4j:slf4j-android:1.7.25'
    implementation 'com.fasterxml.jackson.core:jackson-databind:2.9.8'
    implementation 'org.jmdns:jmdns:3.5.5'
    implementation 'commons-cli:commons-cli:1.4'
    implementation 'org.eclipse.californium:californium-core:2.0.0-M13'
    implementation 'org.eclipse.jetty:jetty-webapp:9.4.14.v20181114'
    implementation 'org.eclipse.jetty:jetty-continuation:9.4.14.v20181114'
    implementation 'commons-io:commons-io:2.6'
    implementation 'org.apache.commons:commons-lang3:3.8.1'
    implementation 'com.google.code.gson:gson:2.8.5'
    implementation 'org.eclipse.leshan:leshan-server-cf:1.0.0-M10'
    implementation 'org.eclipse.leshan:leshan-server-cluster:1.0.0-M10'
}

Источники в настоящее время идентичны файлам в их хранилище github (ссылка выше)

Если я попытаюсьдля компиляции у меня есть:

Задача: app: transformDexArchiveWithExternalLibsDexMergerForDebug FAILED

AGPBI: {"kind": "error", "text": "Тип программы уже присутствует: org.eclipse.leshan.server.cluster.RedisRegistrationStore "," sources ": [{}]," tool ":" D8 "}

Насколько я знаю, это означает, что две библиотеки определяют одно и то жеclass: RedisRegistrationStore

Я хотел бы каким-то образом исключить его.

Рассматривая другое решение, найденное здесь, такое как Аналогичное решение , япопытался сделать некоторые исключения, и я изменил файл gradle следующим образом:

........
    implementation 'org.eclipse.leshan:leshan-server-cluster:1.0.0-M10'{
    exclude group: 'org.eclipse.leshan', module:'cluster'
}
........

, но, возможно, это означает, что я не могу сделать исключения, потому что я получаю эту другую ошибку

Не удалось найти метод org.eclipse.leshan: leshan-server-cluster: 1.0.0-M10 () для аргументов [build_cbo5jg18zhz8pvdsjliwvve5w $ _run_closure1 $ _closure2 @ 428dc770] для объекта типа org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.

*1032* *1032*Я не уверен, что исключение группы / модуля является правильным подходом к моей проблеме.Мне просто нужно удалить один класс.

Я также посмотрел здесь: Android-док, как исправить дублирующиеся классы

Но это не подходит для моей проблемы,потому что мой класс объявлен в lib A и в lib B, а не как прямая зависимость, как в официальной документации

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

И что я делаю не так?

РЕДАКТИРОВАТЬ

Это мое дерево зависимостей

+--- org.slf4j:slf4j-android:1.7.25
|    \--- org.slf4j:slf4j-api:1.7.25
+--- com.fasterxml.jackson.core:jackson-databind:2.9.8
|    +--- com.fasterxml.jackson.core:jackson-annotations:2.9.0
|    \--- com.fasterxml.jackson.core:jackson-core:2.9.8
+--- org.jmdns:jmdns:3.5.5
|    \--- org.slf4j:slf4j-api:1.7.25
+--- commons-cli:commons-cli:1.4
+--- org.eclipse.californium:californium-core:2.0.0-M13
|    +--- org.eclipse.californium:californium-legal:2.0.0-M13
|    +--- org.eclipse.californium:element-connector:2.0.0-M13
|    |    +--- org.eclipse.californium:californium-legal:2.0.0-M13
|    |    \--- org.slf4j:slf4j-api:1.7.25
|    \--- org.slf4j:slf4j-api:1.7.25
+--- org.eclipse.jetty:jetty-webapp:9.4.14.v20181114
|    +--- org.eclipse.jetty:jetty-xml:9.4.14.v20181114
|    |    \--- org.eclipse.jetty:jetty-util:9.4.14.v20181114
|    \--- org.eclipse.jetty:jetty-servlet:9.4.14.v20181114
|         \--- org.eclipse.jetty:jetty-security:9.4.14.v20181114
|              \--- org.eclipse.jetty:jetty-server:9.4.14.v20181114
|                   +--- javax.servlet:javax.servlet-api:3.1.0
|                   +--- org.eclipse.jetty:jetty-http:9.4.14.v20181114
|                   |    +--- org.eclipse.jetty:jetty-util:9.4.14.v20181114
|                   |    \--- org.eclipse.jetty:jetty-io:9.4.14.v20181114
|                   |         \--- org.eclipse.jetty:jetty-util:9.4.14.v20181114
|                   \--- org.eclipse.jetty:jetty-io:9.4.14.v20181114 (*)
+--- org.eclipse.jetty:jetty-continuation:9.4.14.v20181114
+--- commons-io:commons-io:2.6
+--- org.apache.commons:commons-lang3:3.8.1
+--- com.google.code.gson:gson:2.8.5
+--- org.eclipse.leshan:leshan-server-cf:1.0.0-M10
|    +--- org.eclipse.leshan:leshan-core-cf:1.0.0-M10
|    |    +--- org.eclipse.leshan:leshan-core:1.0.0-M10
|    |    |    +--- org.slf4j:slf4j-api:1.7.25
|    |    |    \--- com.eclipsesource.minimal-json:minimal-json:0.9.5
|    |    +--- org.eclipse.californium:californium-core:2.0.0-M12 -> 2.0.0-M13 (*)
|    |    \--- org.eclipse.californium:scandium:2.0.0-M12
|    |         +--- org.eclipse.californium:element-connector:2.0.0-M12 -> 2.0.0-M13 (*)
|    |         \--- org.slf4j:slf4j-api:1.7.25
|    +--- org.eclipse.leshan:leshan-server-core:1.0.0-M10
|    |    \--- org.eclipse.leshan:leshan-core:1.0.0-M10 (*)
|    +--- org.eclipse.californium:californium-core:2.0.0-M12 -> 2.0.0-M13 (*)
|    \--- org.eclipse.californium:scandium:2.0.0-M12 (*)
\--- org.eclipse.leshan:leshan-server-cluster:1.0.0-M10
     +--- org.eclipse.leshan:leshan-core:1.0.0-M10 (*)
     +--- org.eclipse.leshan:leshan-server-cf:1.0.0-M10 (*)
     +--- redis.clients:jedis:2.8.0
     |    \--- org.apache.commons:commons-pool2:2.3
     +--- com.eclipsesource.minimal-json:minimal-json:0.9.5
     +--- commons-cli:commons-cli:1.3.1 -> 1.4
     \--- ch.qos.logback:logback-classic:1.2.3
          +--- ch.qos.logback:logback-core:1.2.3
          \--- org.slf4j:slf4j-api:1.7.25

1 Ответ

0 голосов
/ 12 февраля 2019

попробуйте добавить эту строку

implementation "com.android.support:design:${rootProject.ext.supportLibVersion}"

или вы также можете использовать это

implementation 'com.android.support:appcompat-v7:27.1.0'

implementation 'com.android.support:design:27.1.0'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...