Podczas tworzenia aplikacji pojawia się następujący błąd:
Błąd: wykonanie nie powiodło się dla zadania „: app: transformResourcesWithMergeJavaResForDebug”. Znaleziono więcej niż jeden plik ze ścieżką niezależną od systemu operacyjnego „META-INF / LICENSE”
To jest mój plik build.gradle:
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'
}
Kiedy dodam ten kod do mojego pliku build.gradle,
packagingOptions {
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/NOTICE'
exclude 'META-INF/LICENSE'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
}
Ten błąd zostałby rozwiązany, ale wystąpi inny problem. Lubię to:
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)
Kto ma pomysły, jak to rozwiązać?
android
gradle
build.gradle
Cyrus
źródło
źródło
Odpowiedzi:
Możesz dodać to w
yourProject/app/build.gradle
środkuandroid{}
źródło
W moim przypadku wystarczyło wykluczyć tylko ścieżkę „META-INF / DEPENDENCIES” w
yourProject/app/build.gradle
środkuandroid{}
. Oto jestA następnie wykonaj Clean Project i Rebuild Project.
źródło
Rozwiązania tutaj nie pomogły mi, ale ten link tak.
Jeśli masz bibliotekę, która dodaje niektóre pliki .so dla Androida - podobnie
libassmidi.so
lublibgnustl_shared.so
- musisz powiedzieć gradle, aby wybrał tylko jeden plik podczas pakowania, w przeciwnym razie dojdzie do konfliktu.Miałem ten problem, gdy korzystałem z aplikacji React Native jako biblioteki w projekcie na Androida. Mam nadzieję, że to pomoże
źródło
Miał podobną wiadomość
Aby rozwiązać ten problem, musiałem włączyć widok pakietów ( 1 ) w Android Studio, a następnie przejrzeć drzewo do bibliotek i zlokalizować duplikaty ( 2) )
Następnie ctrl + alt + f12 (lub menu RMB) ( 3 ) - i znalazłem biblioteki, które spowodowały problem. Zrobiłem listę plików w tych bibliotekach, które spowodowały problemy, i zapisałem je w pliku build.gradle aplikacji w sekcji Androida . Inną opcją jest radzenie sobie z biblioteką zawierającą zduplikowane pliki
źródło
Zasadniczo, gdy gradle składa plik apk, kopiuje zawartość ze wszystkich zależności kompilacji. Jest wystarczająco inteligentny, aby zobaczyć, że istnieje duplikat pliku .. pochodzący z dwóch różnych plików jar. Może to być dowolny plik, taki jak a.txt lub META-INF / DEPENDENCIES. Najlepiej jest wykluczyć te pliki, korzystając z poniższego opisu, w przypadku gdy plik jest tam tylko w celach informacyjnych.
Lub jeśli plik jest plikiem obowiązkowym, takim jak plik klasy, który został zduplikowany w dwóch powiązanych ze sobą zależnościach jar, najlepiej jest znaleźć alternatywy dla tych słoików, na drodze bardziej kompatybilnej wersji.
źródło
Miałem ten sam problem i próbowałem tego
Rozwiązanie: Wszystko, co musisz zrobić, aby to naprawić, to dodać to do sekcji Androida {} w „build.gradle” aplikacji
źródło
Dzieje się tak podczas używania
org.jetbrains.kotlinx: kotlinx-coroutines-core: 1.2.0
I został naprawiony w następnej wersji
org.jetbrains.kotlinx: kotlinx-coroutines-core: 1.2.1
źródło
Napotkałem ten sam błąd i stwierdziłem, że wynikał on z różnych modułów zawierających te same klasy z różnych pakietów .
np. Jeden używany pakiet androidx, a drugi używany pre-androidx
Rozwiązałem go, migrując moduł sprzed Androidax na Androidx, korzystając z wbudowanej funkcji Android Studio: „Refaktoryzuj -> Migruj na Androidx ...”, nie wykluczając niczego.
W tej sytuacji możesz sprawdzić, czy masz jakieś niedopasowania zależności między modułami.
źródło
Przeczytałem wszystkie odpowiedzi związane z otrzymaniem tej wiadomości
Android Studio
:ale w tym przypadku wykluczenie klas nie jest konieczne, musimy tylko wykluczyć
'META-INF/DEPENDENCIES'
, można to zrobić wewnątrz/app/build.gradle
:źródło
Zaktualizowałem Studio z Java 7 do Java 8 i ten problem wystąpił. Potem rozwiązałem to w ten sposób:
źródło
W mojej aplikacji dodawałem takie zależności jar:
Ale zdałem sobie sprawę, że zostały już dodane z powodu następującego pierwszego wiersza zależności:
Ta linia dodaje wszystkie słoiki w folderze lib do zależności aplikacji.
Dlatego po usunięciu dodatkowej zależności
implementation files('libs/json-simple-1.1.1.jar')
działa dobrze.
źródło
Napotkałem podobny problem w środowisku aplikacji z wieloma modułami:
Problem ten był zgłaszany przez kilka z moich modułów i żadne z powyższych rozwiązań go nie naprawiało. Okazuje się, że używałem wersji Coroutines 1.3.6, która zdawała się osadzać META-INF / AL2.0, która była już osadzona w innej używanej przeze mnie bibliotece. Aby to naprawić, dodałem następujący fragment kodu do build.gradle modułu, który zawiódł:
Biorąc pod uwagę, że działo się to na wielu modułach, przeniosłem ten
resolutionStrategy
kod do mojego build.gradle na poziomie projektu. Potem wszystko działało.źródło
Mam ten sam problem i próbowałem tego
Błąd: Znaleziono więcej niż jeden plik ze ścieżką niezależną od systemu operacyjnego „META-INF / library_release.kotlin_module”
Rozwiązanie:
źródło
Miałem podobny problem. dostaję komunikat o błędzie -
Jak stwierdzono w niektórych odpowiedziach powyżej, użycie poniższego kodu działa
Ale otrzymywałem ten błąd dla 20 różnych plików, więc po wykluczeniu 20 plików zatrzymałem się i próbowałem znaleźć dobre rozwiązanie. Spotkałem także
W końcu udało mi się to rozwiązać.
Po pierwsze (podobnie jak w moim przypadku WillCloseWhenClosed.java był zduplikowanym plikiem), w Android Studio masz opcję „szukaj wszędzie”. Napisz i wyszukaj tam plik. Tam znalazłem wiele wystąpień tego pliku. Więc kliknąłem oba wystąpienia i zobaczyłem ich lokalizację, klikając plik prawym przyciskiem myszy i widząc jego lokalizację, gdy otworzyły się w Android Studio.
Po drugie, zorientowałem się, że mam pewne zależności w pliku gradle. Korzystałem z poniższego kodu
a także miałem te same pakiety zip w lokalizacji: \ Users \ user \ AndroidStudioProjects \ git \ appname \ app \ libs \ google-http-client-1.23 !.
To było zbędne i dlatego gradle znajduje 2 pliki. Więc usunąłem moje pakiety zip i rozwiązało to dla mnie błędy. Bądź ostrożny, robiąc to. Musisz dowiedzieć się, który plik lub pakiet ma zostać usunięty.
Po trzecie, gradle wykonuje również zip tych plików błędów w tej lokalizacji (przynajmniej dla mnie to zrobiło) - C: \ Program Files \ Android \ Android Studio \ gradle \ m2repository \ com \ google \ code \ findbugs \ jsr305 \ 1.3. 9 \ jsr305-1.3.9.jar!
więc poszedłem i usunąłem tutaj plik jsr305-1.3.9.jar.
Jeśli nadal jesteś zdezorientowany, po prostu przejdź do „szukaj wszędzie” w Android Studio, znajdź tam instancje swojego pliku i musisz usunąć jeden z nich. Nie spiesz się i zastanów się, który z nich.
źródło
Dodawanie
android.useAndroidX = true
android.enableJetifier = true
do gradle.properties działało dla mnie.
źródło
Napotkałem ten problem, najpierw z niektórymi bibliotekami natywnymi (pliki .so), a następnie z plikami java / kotlin. Okazało się, że dołączałem bibliotekę ze źródła, a także odwoływałem się do artefaktów poprzez zależność przechodnią. Sprawdź drzewo zależności, aby sprawdzić, czy nie ma żadnych zbędnych wpisów. Użyj,
./gradlew :app:dependencies
aby uzyskać drzewo zależności. Zamień „app” na nazwę modułu, jeśli nazwa głównego modułu jest inna.źródło
Spróbuj zmienić minimalną wersję Androida> = 21 w swoim build.gradle android {}
źródło
Dodaj następujące elementy w pliku gradel poziomu aplikacji w systemie Android {}
źródło
Spróbuj usunąć multidex z domyślnej konfiguracji i sprawdź dziennik błędów kompilacji. Jeśli ten dziennik jest powiązany z klasą INotification. Użyj tego w Androidzie {}
To mi pomaga.
źródło
Dla mnie poniżej rozwiązanie zadziałało, możesz również uzyskać pomoc, napisałem poniżej wiersza w pliku oceny aplikacji
źródło
Byłem podłączony, ale mój projekt został już zmigrowany do systemu AndroidX, ale po ponownej migracji do systemu AndroidX dokonał on częściowej aktualizacji mojego projektu i problem został rozwiązany.
źródło
Dodaj poniższy kod w app.gradle, to rozwiąże wszystkie błędy zależności biblioteki
źródło
dla mnie było to raczej .md niż .txt
źródło
W wielu odpowiedziach na SO dotyczących tego problemu sugerowano dodanie
exclude 'META-INF/DEPENDENCIES'
i kilka innych wykluczeń. Jednak żaden z nich nie działał dla mnie. W moim przypadku scenariusz wyglądał tak:Dodałem to w zależnościach:
A także dodałem to w gradle.properties:
Oba te dodałem, ponieważ otrzymywałem błąd kompilacji „nie można znaleźć klasy symboli Nullable” i zasugerowano jako rozwiązanie tego problemu w niektórych odpowiedziach, takich jak tutaj
W końcu jednak dostałem błąd:
Nie
exclude
działało dla mnie. W końcu po prostu usunąłem te dodane powyżej wiersze tylko z podejrzeń (Rozwiązane „nie można znaleźć klasy symboli Nullable” w inny alternatywny sposób) i wreszcie pozbyłem się tego błędu kompilacji „Znaleziono więcej niż jeden plik z systemem operacyjnym ...”. Zmarnowałem godziny. Ale w końcu się go pozbyłem.źródło
Musisz tylko unieważnić pamięć podręczną i uruchomić ponownie po tym czystym projekcie
źródło