Миграция на Gradle 3.0.0: ошибка - D8: тип программы уже существует - PullRequest
0 голосов
/ 21 мая 2018

Я перевожу свой проект Android на Gradle 4.4 и плагин Android Gradle 3.1.2.Он имеет библиотечный модуль, который зависит от библиотеки посылок и определяет его зависимость следующим образом:

build.gradle библиотечного модуля:

...
// parceler for serialization (https://github.com/johncarl81/parceler)
implementation "org.parceler:parceler-api:1.0.4"
annotationProcessor "org.parceler:parceler:1.0.4"
...

Это, кажется, хорошо компилируетсяи генерирует мой aar-файл.

Кроме того, мой основной модуль приложения также имеет прямую зависимость от модуля parceler и содержит вышеупомянутые строки в виде зависимостей в его build.gradle вместе с вышеуказанным aar-файлом.

build.gradle основного модуля приложения:

...
api(group: 'com.example.mylibrary', name: 'mylibrary', version: "1.0.7", ext: 'aar') {
    transitive = true;
    changing = true
}
// parceler for serialization (https://github.com/johncarl81/parceler)
implementation "org.parceler:parceler-api:1.0.4"
annotationProcessor "org.parceler:parceler:1.0.4"
...

Все работает до тех пор, пока я не попытаюсь сгенерировать свой APK, который завершается ошибкой со следующей ошибкой.

D8: Program type already present: org.parceler.Parceler$$Parcels$1
Task :MPCApp:transformDexArchiveWithDexMergerForRelease FAILED

Когда я расширяю свой библиотечный проект в Android-студии, я вижу Parcels.class в пакете org.parceler.Но, похоже, аналогичный файл также генерируется основным модулем приложения в том же пакете, который вызывает конфликт.

1 Ответ

0 голосов
/ 29 июня 2018

Обновление до последней версии (в настоящее время 1.1.10) - мы избавились от сгенерированного класса Parcels.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...