Jak naprawić błąd mergeDebugNativeLibs w programowaniu Androida
Jeśli od jakiegoś czasu tworzysz aplikacje na Androida, prawdopodobnie w pewnym momencie natknąłeś się na błąd mergeDebugNativeLibs. Ten błąd występuje, gdy próbujesz skompilować aplikację, a proces kompilacji kończy się niepowodzeniem z powodu konfliktu między co najmniej dwiema bibliotekami natywnymi.
Co to jest błąd „mergeDebugNativeLibs”?
Błąd „mergeDebugNativeLibs” to błąd występujący podczas procesu kompilacji w Android Studio. Zwykle występuje, gdy system kompilacji próbuje scalić wiele bibliotek natywnych o tej samej nazwie. Komunikat o błędzie zwykle wygląda mniej więcej tak:
Execution failed for task ':app:mergeDebugNativeLibs'.
> A failure occurred while executing com.android.build.gradle.internal.tasks.MergeJavaResWorkAction
> 2 files found with path 'lib/armeabi-v7a/libfbjni.so' from inputs:
- /home/sameerather/.gradle/caches/transforms-3/a4c0f48fd0039795aa9b9b61e3691592/transformed/jetified-react-native-0.71.0-rc.0-debug/jni
- /home/sameerather/.gradle/caches/transforms-3/ec37021c3affa43860b52b59222b3dab/transformed/jetified-fbjni-0.3.0/jni
Execution failed for task ':app:mergeDebugNativeLibs'.
> A failure occurred while executing com.android.build.gradle.internal.tasks.MergeNativeLibsTask$MergeNativeLibsWorkerAction
> More than one file was found with OS independent path 'lib/armeabi-v7a/libnative-lib.so'
Błąd mergeDebugNativeLibs występuje, gdy w kompilacji aplikacji znajdują się co najmniej dwie biblioteki natywne o tej samej nazwie. Może się to zdarzyć z różnych powodów, takich jak:
- Używanie dwóch różnych wersji tej samej biblioteki
- W tym biblioteka, która jest już zawarta w innej bibliotece
- Zawiera bibliotekę niezgodną z docelową architekturą Twojej aplikacji
Jak naprawić błąd mergeDebugNativeLibs?
Oto kilka rozwiązań, z których możesz naprawić ten błąd.
Wyklucz zduplikowane biblioteki
Istnieje kilka sposobów naprawienia błędu „mergeDebugNativeLibs”, ale najczęstszym rozwiązaniem jest wykluczenie sprzecznych bibliotek z zależności aplikacji. Oto kroki, aby to zrobić:
- Otwórz plik swojej aplikacji
build.gradle. - Poszukaj sekcji zależności.
- Znajdź bibliotekę, która powoduje błąd.
- Dodaj
excludeinstrukcję do zależności tej biblioteki. - Zsynchronizuj swój projekt i przebuduj.
dependencies {
implementation('com.example.library:library:1.0.0') {
exclude group: 'com.example.conflicting-library'
}
}
Jeśli nie masz pewności, która biblioteka powoduje błąd, możesz użyć polecenia, ./gradlew app:dependenciesaby wyświetlić listę wszystkich zależności aplikacji i ich zależności.
Pamiętaj, że ./gradlewpolecenie będzie działać tylko w androidfolderze. Jeśli uruchomisz go z folderu głównego projektu, prawdopodobnie napotkasz błąd. Dlatego przed uruchomieniem polecenia przejdź do androidfolderu w terminalu lub wierszu polecenia ./gradlew.
Usuń nieobsługiwane biblioteki
Jeśli dołączasz bibliotekę, która nie jest zgodna z docelową architekturą Twojej aplikacji, może być konieczne jej usunięcie. Aby to zrobić, musisz przejrzeć zależności aplikacji i zidentyfikować wszelkie biblioteki, które nie są obsługiwane przez docelową architekturę aplikacji.
Oto kroki, aby przejrzeć zależności aplikacji:
- Otwórz plik swojej aplikacji
build.gradle. - Poszukaj sekcji zależności w pliku.
- Sprawdź targetSdkVersion swojej aplikacji w tym samym pliku.
- Sprawdź obsługiwane ABI (interfejsy binarne aplikacji) dla docelowej wersji Sdk Twojej aplikacji.
- Sprawdź każdą zależność wymienioną w pliku.
- Poszukaj bibliotek, które nie są obsługiwane przez interfejsy ABI elementu targetSdkVersion Twojej aplikacji.
- Usuń wszystkie nieobsługiwane biblioteki z zależności aplikacji.
dependencies {
implementation 'com.example.library:library:1.0.0'
implementation 'com.android.support:appcompat-v7:28.0.0'
}
Jeśli biblioteka nie jest obsługiwana dla targetSdkVersion Twojej aplikacji, możesz ją usunąć, dodając następujący wiersz do zależności biblioteki.
implementation('com.example.library:library:1.0.0') {
exclude group: 'com.example.unsupported-library'
}
Czasami błąd mergeDebugNativeLibs może być spowodowany plikami buforowanymi w twoim projekcie. Aby to naprawić, możesz spróbować wyczyścić swój projekt, wybierając „Wyczyść projekt” z menu „Kompilacja” w Android Studio. Spowoduje to usunięcie wszystkich plików z pamięci podręcznej i odbudowanie projektu od podstaw.
Wniosek
Błąd mergeDebugNativeLibs może być frustrujący, ale nie jest niemożliwy do naprawienia. Korzystając z rozwiązań przedstawionych w tym artykule, powinieneś być w stanie zidentyfikować i naprawić przyczynę błędu w aplikacji na Androida. Pamiętaj, aby sprawdzić swoje zależności, wykluczyć zduplikowane biblioteki, usunąć nieobsługiwane biblioteki i wyczyścić projekt, jeśli to konieczne. Miłego kodowania!

![Czym w ogóle jest lista połączona? [Część 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































