Ich versuche, eine App in Android Studio zu erstellen. Nachdem ich die Eclipse Paho-Bibliothek als Gradle-Abhängigkeit hinzugefügt habe (oder ist es Maven? Ich bin neu im Android-Ökosystem), habe ich die folgende Fehlermeldung erhalten:
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)}
Ich habe viele verschiedene StackOverflow-Fragen zu diesem Fehler überprüft, aber die Antworten sind alle spezifisch für bestimmte Bibliotheken. Ich suche nicht nur nach einer Lösung für den Fehler, sondern nach einem Verständnis dafür, was der Fehler ist bedeutet. Auf diese Weise wird es für die Menschen einfacher, Lösungen für ihre spezifischen Fälle zu finden. Darauf hat sich bisher keine Antwort gegeben.
Aus anderen StackOverflow-Antworten habe ich entnommen, dass es etwas mit meiner Gradle-Datei zu tun hat. Also, hier ist 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/' }
}

Mujtaba FR
Für mich einfach Reinigung Das Projekt hat das Problem gelöst
Verwenden Terminal :
./gradlew clean
Verwenden Android-Studio :
Build (menu) > Clean Project
Dieses Problem entsteht normalerweise durch einen Namenskonflikt, in Ihrem Fall die Bibliothek support-v4, die von mehreren Bibliotheken verwendet wird.
Um die zu finden Liste der Abhängigkeiten für das Modul app
(Name des Standardmoduls für die App) können wir a gradlew app:dependencies
um eine Liste aller Bibliotheken abzurufen.
Wir haben das gefunden support-v4
wird verwendet von:
//short version of the dependencies list highlighting support-v4
+--- com.android.support:support-v13:27.1.0
| \--- com.android.support:support-v4:27.1.0
+--- com.google.android.gms:play-services-maps:12.0.1
| +--- com.google.android.gms:play-services-base:12.0.1
| | +--- com.google.android.gms:play-services-basement:12.0.1
| | | +--- com.android.support:support-v4:26.1.0 -> 27.1.0 (*)
+--- org.eclipse.paho:org.eclipse.paho.android.service:1.0.2
| +--- com.google.android:support-v4:r7 // <- problem here
Wir sehen, dass support-v4 auf Maps die von support-v13 bereitgestellte Version verwendet.
Wir sehen auch, dass die Eclipse-Bibliothek eine andere Version verwendet (r7 ??).
Um Ihr Problem zu lösen, können Sie versuchen, das Modul auszuschließen support-v4
aus dieser Eclipse-Bibliothek wie folgt:
implementation ('org.eclipse.paho:org.eclipse.paho.android.service:1.0.2') {
exclude module: 'support-v4'
}
Dann sollten Sie in der Lage sein, Ihre Bewerbung zusammenzustellen.
Übrigens sollten Sie darauf achten, dass das Eclipse-Modul nicht kaputt geht, indem Sie Ihren Code testen.
Von offizielles Dok
Wenn eine Klasse mehr als einmal im Laufzeitklassenpfad vorkommt, erhalten Sie eine Fehlermeldung ähnlich der folgenden:
Program type already present com.example.MyClass
Dieser Fehler tritt normalerweise aufgrund einer der folgenden Umstände auf:
-
Eine binäre Abhängigkeit enthält eine Bibliothek, die Ihre App auch als direkte Abhängigkeit enthält.
Beispielsweise deklariert Ihre App eine direkte Abhängigkeit von Bibliothek A und Bibliothek B, aber Bibliothek A enthält bereits Bibliothek B in ihrer Binärdatei. Um dieses Problem zu beheben, entfernen Sie Bibliothek B als direkte Abhängigkeit.
-
Ihre App hat eine lokale binäre Abhängigkeit und eine entfernte binäre Abhängigkeit von derselben Bibliothek.
Um dieses Problem zu beheben, entfernen Sie eine der binären Abhängigkeiten. (Sehen Sie, ob dieselbe Bibliothek als jar- und gradle-Abhängigkeit hinzugefügt wird)

mexikanischer juadha
Es ist mir auch passiert, aber in meinem Fall versuche ich, verschiedene Abhängigkeiten einzuschließen, die dieselbe Klasse verwenden debugApi
& Api
Also wurde Android Studio als doppelte Klasse markiert, also habe ich das Problem mit gelöst debugApi
& releaseApi
um verschiedene Abhängigkeiten basierend auf der Build-Variante aufzunehmen.
In meinem Fall bedeutet dies, dass ich 2 * .jar-Dateien oder 2 Bibliotheken irgendwo im Quellcode habe. Beispiel: Ich habe 2 youtube.jar
in app/libary
und module/libary
Löschen Sie das Überflüssige einmal und es wird in Ordnung sein

Phani Varma
Hinzufügen der Support-Bibliothek zur Gradle-Datei auf App-Ebene
Implementierung „com.android.support:design:27.1.0“

Ranjithkumar
Problem für dieses Problem – Wenn Sie die Bibliothek als Modul und dieselbe Bibliothek als Abhängigkeit in einer anderen Bibliothek verwenden.
Beispiel: BibliothekA importiert als Modul & gleich BibliothekA als Abhängigkeit in einem anderen Bibliotheksmodul hinzugefügt.
Wie kann dieses Problem behoben werden?
Lösung 1 -> wenn Sie beide behalten möchten -> Refaktorieren Sie einfach den Paketnamen von BibliothekA Modul
Lösung 2 -> entfernen Sie die BibliothekA Abhängigkeit und verwenden Sie das Modul
Implementierungsprojekt(‘:LibraryA’)
9146200cookie-checkWas bedeutet „Programmtyp bereits vorhanden“?yes