Ошибка: тип программы уже присутствует при создании проекта

Я использую созданную мной библиотеку aar. И в моем проекте, и в библиотеке есть реализация зависимостей библиотеки Conceal (каждая из своей собственной папки lib).

Когда я создаю проект после импорта библиотеки и использования обфускации ProGuard, я получаю следующее сообщение об ошибке:

Error: Program type already present: com.facebook.crypto.cipher.NativeGCMCipher

Как я могу решить эту проблему?

1
0
1 283
3

Ответы 3

эта ошибка означает, что вы импортируете зависимость, которая уже импортирована в проект.

решение: - удалить или исключить эту зависимость

бывший:-

compile ('com.github.ganfra:material-spinner:1.1.1'){
    exclude group: 'com.nineoldandroids'
  }

Я понимаю, что зависимость уже импортирована, но при удалении ее из библиотеки я не могу построить, потому что в ней отсутствует библиотека, и когда я удаляю ее из проекта, она не может импортировать из библиотеки. Как мне исключить его из библиотеки?

Geeky bean 02.01.2019 13:02

Я использую файл jar: файлы реализации ('libs / hide_android.jar') файлы реализации ('libs / libconceal.jar'), если я пишу: файлы реализации ('libs / libconceal.jar') {исключить группу: 'com.facebook.crypto.cipher.NativeGCMCipher'}

Geeky bean 02.01.2019 13:13

@ Пусть имя класса - это не имя пакета; запускаем ./gradlew app:dependencies > dependencies.txt и добавляем в вопрос; тогда, наверное, можно на это ответить.

Martin Zeitler 02.01.2019 13:20

это дает мне ошибку - «Gradle DSL method not found: 'exclude ()'», когда я пишу - «файлы реализации ('libs / libconceal.jar') exclude (group: 'com.facebook.crypto.Conceal')»

Geeky bean 02.01.2019 13:47

@Itay, зачем вам исключать пакет из самого себя? см. комментарий выше.

Martin Zeitler 02.01.2019 13:51

Я хочу исключить его из реализации библиотеки, пока он еще существует в реализации проекта. иначе я получу ошибку «Тип программы уже присутствует»

Geeky bean 02.01.2019 13:59

согласно mavenCentral(), это имя пакета (которое можно использовать вместо .jar):

// https://mvnrepository.com/artifact/com.facebook.conceal/conceal
implementation "com.facebook.conceal:conceal:2.0.2"

поэтому исключение должно выглядеть примерно так:

implementation( project(":libraryproject") ) {
    exclude group: "com.facebook.conceal"
}

Я получаю сообщение об ошибке «Gradle DSL method not found: 'exclude ()'»

Geeky bean 02.01.2019 14:01

@Itay вы уверены, что использовали код, как показано? этот синтаксис правильный. если у вас есть Gradle DSL method not found: 'exclude()', возможно, вам не хватает окружающих скобок ().

Martin Zeitler 02.01.2019 14:27

Насколько я понимаю, ошибка означает, что я импортировал зависимость, которая уже импортирована в проект (один раз в проекте и один раз в библиотеке). В предлагаемых решениях @Mayur Dabhi и @Martin Zeitler был правильный подход, но, к сожалению, мне не удалось заставить работать команду exclude.

наконец, с помощью @Martin Zeitler я заменил:

implementation files('libs/conceal_android.jar')
implementation files('libs/libconceal.jar')

с участием:

implementation "com.facebook.conceal:conceal:2.0.2"

Это означает, что я удалил файлы jar «Скрыть» из папки «lib» и импортировал зависимость. После этого сообщение об ошибке исчезло, и мне удалось собрать проект.

Спасибо всем, кто пытался помочь :)

Другие вопросы по теме