Android Studio - Ошибка: тип программы уже присутствует

Когда я пытаюсь скомпилировать код, на Android Studio 3.0.1 появляется следующая ошибка.

Error:Program type already present: com.squareup.picasso.Action$RequestWeakReference

Мой gradle код:

  ...
    compile 'com.android.support:appcompat-v7:26.1.0'
    compile 'com.android.support:design:26.1.0'
    compile 'com.android.support:support-v4:26.1.0'
    compile 'com.android.support:support-vector-drawable:26.1.0'
    compile 'com.android.support.constraint:constraint-layout:1.1.0-beta4'
    compile 'com.google.firebase:firebase-messaging:11.8.0'
    compile 'com.google.firebase:firebase-ads:11.8.0'
    compile 'com.google.gms:google-services:3.1.0'
    compile 'com.google.android.gms:play-services:11.8.0'
    compile 'com.squareup.picasso:picasso:2.5.2'
    testCompile 'junit:junit:4.12'

}

apply plugin: 'com.google.gms.google-services'

Как исправить мой gradle script, чтобы исправить ошибку?

Ответ 1

Добавьте это в свой модуль build.gradle file

  configurations.all {exclude group: 'com.android.support', module: 'support-v13'}

Ответ 2

У меня просто была такая же проблема, поэтому я поделюсь решением, которое сработало для меня. Моя ошибка была:

Program type already present: org.json.CDL

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

    compile('ch.acra:acra:4.5.0') {
    exclude group: 'org.json'
}   

Так что в случае OP решение было бы найти, какая из его зависимостей уже компилирует com.squareup.picasso и исключить, как в коде выше.

Ответ 3

Проверьте версию компиляции в настройках вашего приложения. Я изменил его на версию, совместимую с уровнем API, с которым я построил свой проект. Это устранило проблему для меня.

Ответ 4

Я столкнулся с кошмаром множества проблем при создании APK после того, как обновил Android Studio до 3.1.2 и targetSdkVersion до 27. Это был один из них.

implementation 'me.leolin:ShortcutBadger:[email protected]' 

Эта строка вызывает ошибку сборки. Program type already present: me.leolin.shortcutbadger.Badger

Сейчас я просто прокомментировал это, и он скомпилирован гладко.

Ответ 5

Существует несоответствие версии библиотеки. Если вы используете более новую версию Android Studio, она будет перехватывать сообщение об ошибке. Просто устраните несоответствие версий или измените версию компиляции, и все будет в порядке.

Смотрите зависимости, определенные ниже dependencies

Ответ 6

Хорошо, возможно, это не ваше дело, но это сообщение выходит из компиляции также в следующем сценарии

Я создал приложение. Затем я модифицировал файл приложения gradle таким образом, чтобы создать файл aar вместо apk [i.e. apply plugin: 'com.android.library'], чтобы переместить здесь некоторые из методов, которые должны были быть вызваны исходным приложением

Затем - в исходном приложении - я прокомментировал методы, которые я переместил в файл aar, и добавил в проект приложения файл aar, созданный до

В этот момент я получил ту же ошибку

Сообщение Error:Program type already present помогло мне понять, что мне пришлось переименовать имя пакета проекта Android Studio, который создавал библиотеку, потому что у них было одинаковое имя пакета. Поэтому я переименовал его, я снова построил файл aar и снова добавил этот "новый" файл в проект Android Studio, создав apk

Как только проблема исчезла

Ответ 7

Это может произойти, если несоответствие версии библиотеки.

В моем случае, когда я обновил зависимости Google Services от:

classpath 'com.google.gms:google-services:3.0.0'

к

classpath 'com.google.gms:google-services:3.2.1'

ошибка исчезла.

Ответ 8

Я столкнулся с этой ошибкой в ​​Android Studio 3.1.2 после того, как добавил Kotlin поддержку проекта Java, а затем удалил все файлы Kotlin (но оставил конфигурацию gradle на месте). Удаление конфигурации Kotlin разрешило эту проблему.

Ответ 9

Для меня эта ошибка появилась, когда мой файл build.gradle содержал недопустимую строку.

Я добавил файл .jar в качестве библиотеки, и сборка не удалась. Я проверил файл build.gradle, и он как-то содержал две строки:

implementation files('libs/bcprov.jar')
implementation files('bcprov.jar')

Конечно, я только добавил .jar в папку libs, поэтому вторая строка недействительна. После того как я удалил вторую строку, ошибка исчезла.

Надеюсь, это кому-нибудь поможет.

Ответ 10

это происходит, когда у вас есть дубликаты зависимостей, перечислите все ваши зависимости с ./gradlew app:dependencies

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

Ответ 11

Это произошло, когда вы обновили версию сборки библиотеки и старый файл сборки не был ясен. Или другие библиотеки зависят от библиотеки. В моем случае я обновляю com.google.gms:google-services

Решение состоит в том, чтобы открыть папку вашего проекта и удалить папку build а затем снова открыть и очистить кэш, Файл> Invalidate Caches/Restart.