Я пытаюсь создать приложение в Android Studio. После добавления библиотеки Eclipse Paho в качестве зависимости gradle (или это Maven? Я новичок в экосистеме Android) я получил следующую ошибку:
Program type already present: android.support.v4.accessibilityservice.AccessibilityServiceInfoCompat
Message{kind=ERROR, text=Program type already present: android.support.v4.accessibilityservice.AccessibilityServiceInfoCompat, sources=[Unknown source file], tool name=Optional.of(D8)}
Я проверил много разных вопросов StackOverflow, связанных с этой ошибкой, но все ответы относятся к определенным библиотекам. Ищу не только решение ошибки, но и понимание того, что означает ошибка . Так людям будет легче найти решения для своих конкретных случаев. Пока ответа нет.
Из других ответов StackOverflow я понял, что это как-то связано с моим файлом gradle. Итак, вот app / build.gradle:
apply plugin: 'com.android.application'
android {
compileSdkVersion 27
defaultConfig {
applicationId "---REDACTED FOR PRIVACY---"
minSdkVersion 15
targetSdkVersion 27
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'com.android.support:appcompat-v7:27.1.0'
implementation 'com.android.support:support-media-compat:27.1.0'
implementation 'com.android.support:support-v13:27.1.0'
implementation 'com.google.android.gms:play-services-maps:12.0.1'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.1'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
implementation 'com.android.support.constraint:constraint-layout:1.0.2'
implementation 'org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.0.2'
implementation 'org.eclipse.paho:org.eclipse.paho.android.service:1.0.2'
}
repositories {
maven { url 'https://repo.eclipse.org/content/repositories/paho-releases/' }
}
источник
Для меня просто очистка проекта решила проблему
Используя Терминал :
Используя Android Studio :
источник
Build > Clean Project
.File > Invalidate Caches / Restart > Invalidate and restart
может решить проблемуИз официального документа
Если класс появляется более одного раза в пути к классам среды выполнения, вы получите ошибку, подобную следующей:
Program type already present com.example.MyClass
Эта ошибка обычно возникает из-за одного из следующих обстоятельств:
Бинарная зависимость включает в себя библиотеку, которую ваше приложение также включает в качестве прямой зависимости.
Например, ваше приложение декларирует прямую зависимость от библиотеки A и библиотеки B, но библиотека A уже включает библиотеку B в свой двоичный файл. Чтобы решить эту проблему, удалите библиотеку B как прямую зависимость.
Ваше приложение имеет локальную двоичную зависимость и удаленную двоичную зависимость от одной и той же библиотеки.
Чтобы решить эту проблему, удалите одну из двоичных зависимостей. (Посмотрите, добавлена ли такая же библиотека как зависимость jar и gradle)
источник
Это случилось и со мной, но в моем случае я пытаюсь включить различные зависимости, которые имеют один и тот же класс, используя
debugApi
&,Api
поэтому Android Studio помечена как повторяющийся класс, поэтому я решил проблему, используяdebugApi
&,releaseApi
чтобы включить различные зависимости на основе варианта сборки.источник
Добавить библиотеку поддержки в файл Gradle уровня приложения
источник
В моем случае это означает, что у меня есть 2 файла * .jar или 2 библиотеки где-то в исходном коде. Например: у меня есть 2
youtube.jar
вapp/libary
иmodule/libary
удалить лишние разы и это будет хорошоисточник
Проблема для этой проблемы - если вы используете библиотеку как модуль и ту же библиотеку как зависимость в другой библиотеке.
Пример: LibraryA импортирована как модуль, а такая же LibraryA добавлена как зависимость в любой другой библиотечный модуль.
Как исправить эту проблему?
Решение 1 -> если вы хотите сохранить оба -> Просто измените имя пакета модуля LibraryA
Решение 2 -> удалите зависимость LibraryA и используйте модуль
источник
Надеюсь, это кому-то поможет, у меня сработал проект Build> Clean.
источник