Wenn ich meine App erstelle, wird folgende Fehlermeldung angezeigt:
Fehler: Ausführung für Aufgabe ': app: transformResourcesWithMergeJavaResForDebug' fehlgeschlagen. Es wurde mehr als eine Datei mit dem vom Betriebssystem unabhängigen Pfad 'META-INF / LICENSE' gefunden.
Dies ist meine build.gradle-Datei:
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
android {
compileSdkVersion 25
buildToolsVersion "25.0.2"
defaultConfig {
applicationId "cn.sz.cyrus.kotlintest"
minSdkVersion 14
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
javaCompileOptions{
annotationProcessorOptions{
includeCompileClasspath = true
}
}
multiDexEnabled true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
packagingOptions {
/* exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/NOTICE'
exclude 'META-INF/LICENSE'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'*/
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"
compile 'com.android.support:appcompat-v7:25.3.1'
testCompile 'junit:junit:4.12'
compile 'com.android.support:design:25.3.1'
compile 'com.android.support.constraint:constraint-layout:1.0.2'
debugCompile 'com.squareup.leakcanary:leakcanary-android:1.5.1'
releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5.1'
testCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5.1'
compile 'com.github.GrenderG:Toasty:1.2.5'
compile 'com.orhanobut:logger:1.15'
compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
compile 'com.umeng.analytics:analytics:latest.integration'
compile 'ai.api:libai:1.4.8'
compile 'ai.api:sdk:2.0.5@aar'
// api.ai SDK dependencies
compile 'com.google.code.gson:gson:2.8.0'
compile 'commons-io:commons-io:2.4'
compile 'com.android.support:multidex:1.0.1'
}
Wenn ich diesen Code zu meiner build.gradle-Datei hinzufüge,
packagingOptions {
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/NOTICE'
exclude 'META-INF/LICENSE'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
}
Dieser Fehler wäre behoben, aber ein anderes Problem wird auftreten. So was:
java.lang.NoClassDefFoundError: com.squareup.leakcanary.internal.HeapAnalyzerService
at com.squareup.leakcanary.LeakCanary.isInAnalyzerProcess(LeakCanary.java:145)
at cn.sz.cyrus.wemz.TestApplication.onCreate(TestApplication.kt:32)
Wer hat Ideen, wie man das löst?
android
gradle
build.gradle
Cyrus
quelle
quelle
Antworten:
Sie können dies
yourProject/app/build.gradle
innen hinzufügenandroid{}
quelle
In meinem Fall war es ausreichend, nur den Pfad 'META-INF / DEPENDENCIES' im
yourProject/app/build.gradle
Inneren auszuschließenandroid{}
. Hier ist esFühren Sie dann "Projekt bereinigen" und "Projekt neu erstellen" aus.
quelle
Die Lösungen hier haben mir nicht geholfen, aber dieser Link getan.
Wenn Sie eine Bibliothek haben, die einige Android-So-Dateien hinzufügt - wie
libassmidi.so
oderlibgnustl_shared.so
-, müssen Sie gradle anweisen , beim Packen nur eine auszuwählen, da sonst der Konflikt auftritt .Ich hatte dieses Problem, als ich eine React Native-App als Bibliothek in einem Android-Projekt verwendete. Ich hoffe es hilft
quelle
Hatte eine ähnliche Nachricht
Um das Problem zu beheben, musste ich die Paketansicht ( 1 ) in Android Studio aktivieren , dann in der Baumstruktur nach Bibliotheken suchen und die Duplikate suchen ( 2 ).
Dann Strg + Alt + F12 (oder RMB-Menü) ( 3 ) - und Bibliotheken gefunden, die das Problem verursacht haben. Liste der Dateien in den Bibliotheken erstellt, die die Probleme verursacht haben, und in die build.gradle-Datei der App im Android- Bereich geschrieben. Eine andere Möglichkeit besteht darin, sich mit der Bibliothek zu befassen, die doppelte Dateien enthält
quelle
Wenn gradle die apk-Datei zusammenstellt, kopiert es grundsätzlich Inhalte aus allen Kompilierungsabhängigkeiten. Es ist intelligent genug, um zu erkennen, dass es eine doppelte Datei gibt, die aus zwei verschiedenen JAR-Dateien stammt. Dies kann eine beliebige Datei wie a.txt oder META-INF / DEPENDENCIES sein. Es ist möglicherweise am besten, diese Dateien wie folgt auszuschließen, falls die Datei dort nur zu Informationszwecken vorhanden ist.
Wenn es sich bei der Datei um eine obligatorische Datei wie eine Klassendatei handelt, die über zwei miteinander verbundene JAR-Abhängigkeiten dupliziert wurde, ist es am besten, Alternativen zu diesen Jars in Form einer kompatibleren Version zu finden.
quelle
Ich hatte das gleiche Problem und habe es versucht
Lösung: Alles, was Sie tun müssen, um dies zu beheben, ist, dies dem Android {} -Abschnitt im 'build.gradle' Ihrer App hinzuzufügen.
quelle
Dies geschieht bei der Verwendung
org.jetbrains.kotlinx: kotlinx-coroutines-core: 1.2.0
Und ist in der nächsten Version behoben
org.jetbrains.kotlinx: kotlinx-coroutines-core: 1.2.1
quelle
Ich habe den gleichen Fehler festgestellt und festgestellt, dass er aus verschiedenen Modulen resultiert, die dieselben Klassen aus verschiedenen Paketen enthalten .
zB Ein verwendetes Androidx-Paket und das andere verwendete Pre-Androidx
Ich habe es gelöst, indem ich das Pre-AndroidX-Modul mit der integrierten Funktion von Android Studio auf AndroidX migriert habe : "Refactor -> Migrate to Androidx ...", ohne etwas auszuschließen.
In Ihrer Situation können Sie überprüfen, ob Abhängigkeiten zwischen Modulen nicht übereinstimmen.
quelle
Ich habe alle Antworten zum Erhalt dieser Nachricht gelesen
Android Studio
:aber in diesem Fall ist das Ausschließen von Klassen nicht erforderlich, wir müssen nur ausschließen
'META-INF/DEPENDENCIES'
, dies kann innerhalb von/app/build.gradle
:quelle
Ich habe Studio von Java 7 auf Java 8 aktualisiert und dieses Problem ist aufgetreten. Dann habe ich es so gelöst:
quelle
In meiner App habe ich die JAR-Abhängigkeiten wie folgt hinzugefügt:
Ich stellte jedoch fest, dass sie aufgrund der folgenden ersten Zeile in Abhängigkeiten bereits hinzugefügt wurden:
Diese Zeile fügt alle Jars im lib-Ordner zur App-Abhängigkeit hinzu.
Daher nach dem Entfernen der zusätzlichen Abhängigkeit
implementation files('libs/json-simple-1.1.1.jar')
es funktioniert gut.
quelle
Ich habe ein ähnliches Problem bei der Arbeit in einer App-Umgebung mit mehreren Modulen festgestellt:
Dieses Problem wurde von mehreren meiner Module gemeldet, und keine der oben genannten Lösungen hat es behoben. Es stellte sich heraus, dass ich die Version Coroutines 1.3.6 verwendete, in die META-INF / AL2.0 eingebettet zu sein schien, die bereits von einer anderen der von mir verwendeten Bibliotheken eingebettet war. Um dies zu beheben, habe ich dem build.gradle des fehlerhaften Moduls das folgende Codefragment hinzugefügt:
Da es auf mehreren Modulen passiert ist, habe ich das verschoben
resolutionStrategy
Code in mein build.gradle auf Projektebene verschoben. Danach hat alles geklappt.quelle
Ich habe das gleiche Problem und habe es versucht
Error: mehr als eine Datei mit dem betriebssystemunabhängigen Pfad 'META-INF / library_release.kotlin_module' gefunden.
Lösung:
quelle
Ich hatte ein ähnliches Problem. Ich bekam die Fehlermeldung -
Wie in einigen der obigen Antworten angegeben, funktioniert die Verwendung des folgenden Codes
Aber ich habe diesen Fehler für 20 verschiedene Dateien erhalten, also habe ich nach dem Ausschließen von 20 Dateien angehalten und versucht, eine anständige Lösung zu finden. Ich war auch dem begegnet
Ich habe es endlich geschafft, das zu lösen.
Erstens (wie in meinem Fall WillCloseWhenClosed.java war die doppelte Datei) haben Sie in Android Studio die Option "Überall suchen". Schreiben und suchen Sie dort nach der Datei. Dort habe ich mehrere Instanzen dieser Datei gefunden. Also klickte ich auf beide Instanzen und sah ihren Speicherort, indem ich mit der rechten Maustaste auf die Datei klickte und ihren Speicherort sah, als sie in Android Studio geöffnet wurden.
Zweitens habe ich herausgefunden, dass ich einige Abhängigkeiten in der Gradle-Datei hatte. Ich habe den folgenden Code verwendet
Außerdem hatte ich die gleichen Zip-Pakete am Speicherort: \ Users \ user \ AndroidStudioProjects \ git \ appname \ app \ libs \ google-http-client-1.23!.
Das war also überflüssig und deshalb findet gradle 2 Dateien. Also habe ich meine Zip-Pakete gelöscht und die Fehler für mich behoben. Seien Sie dabei vorsichtig. Sie müssen herausfinden, welche Datei oder welches Paket zum Löschen die richtige ist.
Drittens erstellt gradle auch eine Zip-Datei dieser Fehlerdateien an diesem Speicherort (zumindest für mich) - C: \ Programme \ Android \ Android Studio \ gradle \ m2repository \ com \ google \ code \ findbugs \ jsr305 \ 1.3. 9 \ jsr305-1.3.9.jar!
Also habe ich auch die Datei jsr305-1.3.9.jar von hier gelöscht.
Wenn Sie immer noch verwirrt sind, gehen Sie einfach in Android Studio auf "Überall suchen", suchen Sie dort nach Instanzen Ihrer Datei, und Sie müssten eine davon löschen. Nehmen Sie sich Zeit und finden Sie heraus, welche.
quelle
Hinzufügen
android.useAndroidX = true
android.enableJetifier = true
zu gradle.properties hat bei mir funktioniert.
quelle
Ich war mit diesem Problem konfrontiert, zuerst mit einigen nativen Bibliotheken (.so-Dateien) und dann mit Java / Kotlin-Dateien. Es stellte sich heraus, dass ich eine Bibliothek aus dem Quellcode aufgenommen und durch eine transitive Abhängigkeit künstlich referenziert habe. Überprüfen Sie Ihren Abhängigkeitsbaum, um festzustellen, ob redundante Einträge vorhanden sind. Verwenden Sie
./gradlew :app:dependencies
diese Option , um den Abhängigkeitsbaum abzurufen. Ersetzen Sie "App" durch Ihren Modulnamen, wenn der Name des Hauptmoduls unterschiedlich ist.quelle
Fügen Sie Folgendes in der Gradel-Datei auf App-Ebene in Android {} hinzu
quelle
Versuchen Sie, Multidex aus der Standardkonfiguration zu entfernen, und überprüfen Sie das Build-Fehlerprotokoll. Wenn dieses Protokoll mit der INotification-Klasse verknüpft werden kann. Verwenden Sie dies in Android {}
Das hilft mir.
quelle
Für mich unten Lösung funktioniert, können Sie auch Hilfe bekommen, schrieb ich unten Zeile in der Gradle-Datei der App
quelle
Ich war verkabelt, aber mein Projekt wurde bereits auf AndroidX migriert, aber nach der erneuten Migration auf AndroidX wurde ein Teil meines Projekts überarbeitet und das Problem behoben.
quelle
Versuchen Sie, die minimale Android-Version> = 21 in Ihrem build.gradle android {} zu ändern
quelle
Für mich war es eher .md als .txt
quelle
In vielen Antworten auf SO zu diesem Problem wurde vorgeschlagen, hinzuzufügen
exclude 'META-INF/DEPENDENCIES'
einige andere Ausschlüsse und einige andere auszuschließen. Allerdings hat keines davon für mich funktioniert. In meinem Fall war das Szenario so:Ich hatte dies in Abhängigkeiten hinzugefügt:
Und auch ich hatte dies in gradle.properties hinzugefügt:
Beides hatte ich hinzugefügt, weil ich den Build-Fehler "Symbolklasse Nullable kann nicht gefunden werden" erhielt und es als Lösung für einige Antworten wie hier vorgeschlagen wurde
Irgendwann landete ich jedoch in einem Fehler:
Nein hat
exclude
für mich gearbeitet. Schließlich habe ich die oben hinzugefügten Zeilen aus Suspecion entfernt (Gelöst 'Symbolklasse Nullable kann auf keine alternative Weise gefunden werden') und schließlich diesen Build-Fehler "Es wurde mehr als eine Datei mit Betriebssystem gefunden ..." entfernt. Ich habe Stunden von mir verschwendet. Aber endlich losgeworden.quelle
Nach dem Bereinigen des Projekts müssen Sie nur noch den Cache ungültig machen und neu starten
quelle