W mojej aplikacji na Androida w Eclipse pojawia się następujący błąd.
NIEoczekiwany wyjątek na najwyższym poziomie : java.lang.IllegalArgumentException: już dodano: Lorg / xmlpull / v1 / XmlPullParser;
....
Konwersja do formatu Dalvik nie powiodła się z błędem 1
Ten błąd pojawia się tylko wtedy, gdy dodam określony zewnętrzny plik JAR do mojego projektu. Długo szukałem możliwego rozwiązania, ale żadne z możliwych rozwiązań nie działa.
Próbowałem nawet przejść na system Android 1.6 zamiast 1.5 (obecna wersja, której używam).
android
dalvik
android-sdk-1.6
Michel
źródło
źródło
Odpowiedzi:
Przejdź do projektu »Właściwości» Ścieżka kompilacji Java »Biblioteki i usuń wszystkie oprócz„ Android XY ”(w moim przypadku Android 1.5). Kliknij OK. Przejdź do Projekt »Wyczyść» Wyczyść wybrane projekty poniżej »wybierz projekt i kliknij OK. To powinno działać.
Możliwe jest również, że plik JAR znajduje się gdzieś w folderach projektu (skopiowałem plik JAR Admob do mojego folderu src), a następnie dodałem go jako bibliotekę Java Path Library. Nie pojawia się w Eksploratorze pakietów, więc go nie zauważasz, ale jest liczony dwukrotnie, co powoduje przerażający błąd Dalvik 1.
Innym możliwym powodem mogą być konflikty nazw pakietów. Załóżmy, że masz pakiet
com.abc.xyz
i klasę o nazwieA.java
wewnątrz tego pakietu, a także inny projekt biblioteki (który jest dodawany do zależności tego projektu), który zawiera ten samcom.abc.xyz.A.java
, to otrzymasz ten sam błąd. Oznacza to, że masz wiele odniesień do tego samego plikuA.java
i nie możesz go poprawnie zbudować.Innymi sposobami może się to zdarzyć, jeśli przypadkowo lub świadomie edytujesz / dodajesz coś w pliku ścieżki klasy ręcznie. W niektórych przypadkach możemy ręcznie dodać ścieżkę android.jar do pliku ścieżki klas w celu wygenerowania dokumentu java. Usunięcie tego po wygenerowaniu javadoc kod będzie działał poprawnie. Sprawdź to również, jeśli nadal występuje.
źródło
Rozwiązałem problem.
Jest to konflikt pliku JAR.
Wygląda na to, że mam dwa pliki JAR na ścieżce kompilacji, które zawierają ten sam pakiet i klasy.
smack.jar
iandroid_maps_lib-1.0.2
Usunięcie tego pakietu z jednego z plików JAR rozwiązało problem.
źródło
ScoreloopUI
projekt do mojej gry AndEngine, słoiki te również zakłócają twój, nawet jeśli nie są na ścieżce kompilacji twojego projektu.Rozwiązanie Windows 7:
Potwierdzono, że przyczyną problemu jest linia poleceń ProGuard w pliku
[katalog instalacyjny zestawu SDK systemu Android] \ tools \ proguard \ bin \ proguard.bat
Edytuj następujący wiersz rozwiąże problem:
do
źródło
Możesz łatwo rozwiązać ten problem (za pomocą Eclipse Android Developer Tools, Build: v22.0.1-685705), wyłączając menu> „Projekt”> „Twórz automatycznie” podczas eksportowania (nie) podpisanej aplikacji Android. Następnie nie zapomnij włączyć go ponownie.
źródło
Jeśli masz wersję ADT 12+, powinieneś zaktualizować swój proguard z 4.4 -> 4.6 (jak opisano tutaj) ). Powinieneś również zostawić plik ... \ bin \ proguard.bat w oryginalnej formie.
Wystarczy pobrać go z Internetu i skopiować folder lib z pobranego pakietu do:
[Katalog instalacyjny zestawu SDK systemu Android] \ tools \ proguard \ lib
źródło
<sdk>/tools/proguard
i przeniosłem cały rozpakowany katalogproguard4.11
na starą ścieżkę. Voila! Teraz gdybym tylko mógł odzyskać poprzednią godzinę ... -_-EDYCJA (nowe rozwiązanie):
Wygląda na to, że poprzednie rozwiązanie jest tylko obejściem. W końcu udało mi się ostatecznie rozwiązać problem na stałe: w moim przypadku wystąpiło niedopasowanie w plikach android-support-v4 w moim projekcie oraz w projekcie Facebook, do którego odwołuje się mój projekt.
Znalazłem ten błąd, wykonując Lint Check (Android Tools / Run Lint: Check for Common Errors)
Moje poprzednie rozwiązanie:
Wypróbowałem jakiekolwiek możliwe rozwiązanie na tej stronie - nic nie pomogło !!!
Wreszcie znalazłem odpowiedź tutaj: https://groups.google.com/forum/#!topic/actionbarsherlock/drzI7pEvKd4
Proste kroki:
źródło
Oto kolejny scenariusz i rozwiązanie:
Jeśli napotkasz ten problem niedawno po zaktualizowaniu narzędzia ADT dla środowiska Eclipse:
Wydaje się, że powodem jest to, że niektóre poprzednie wersje dołączonych folderów źródłowych projektu Biblioteki ADT do projektów „potomnych”, a obecna kombinacja ADT / Dex nie jest już zgodna z tym rozwiązaniem.
EDYCJA: potwierdza to wpis na Android Dev Blog, a konkretnie ten - patrz ósmy akapit dalej.
źródło
Przejdź do projektu, a następnie odznacz „Kompiluj automatycznie”. Następnie spróbuj wyeksportować projekt i błąd zniknie.
źródło
Może to być również spowodowane dodaniem
Android.jar
pliku do ścieżki kompilacji, na przykład przez przypadkową szybką poprawkę w środowisku Eclipse. Usuń go prawym przyciskiem myszy Projekt -> ścieżka kompilacji -> skonfiguruj ścieżkę kompilacji -> android.jar , usuń.źródło
Po prostu czyszczenie projektu działało dla mnie za każdym razem, gdy pojawiał się ten błąd.
źródło
Moje własne i jedyne rozwiązanie, które znalazłem dzisiaj po czterech godzinach testowania wszystkich rozwiązań, jest kombinacją wielu rozwiązań tutaj:
Delete
projekt z Eclipse\bin
oraz\gen
z folderu projektu.classpath
pliku w głównym folderze projektueclipse -clean
Import
projektProperties
>Java Build Path
>Libraries
i usuń wszystko inne niżAndroid XX.Y
clean
projektu, poczekaj na automatyczny budynek lubBuild
toPróbowałem na każdym kroku na raz i wiele kombinacji, ale udało się to tylko z rzędu wszystkich kroków na raz! Mam nadzieję, że już więcej się nie spotkam ...
źródło
bin
folderu zrobiło to dla mnie.Tylko dla innych osób, które nadal mają ten problem i próbowały powyższych odpowiedzi, ale wciąż otrzymywały błąd (co było moim przypadkiem), moim rozwiązaniem było usunięcie projektu z Eclipse i ponowne zaimportowanie go ponownie.
To spowodowało, że biblioteka Androida została ponownie dodana do moich bibliotek, do których się odwołujemy, więc teraz mam odwołania do dwóch plików JAR Androida, stąd usunąłem jeden z nich i teraz kompiluje się dobrze.
Rozwiązanie: Usuń projekt z Eclipse IDE, a następnie ponownie go zaimportuj, a następnie sprawdź powyższe rozwiązania.
źródło
Wpadłem dzisiaj na ten problem. Czyszczenie i przebudowa nie rozwiązały problemu. Usunięcie i ponowne zaimportowanie projektu również nie pomogło.
W końcu prześledziłem to z powrotem do złych dodatków do mojego pliku .class. Myślę, że zostało to dodane przez narzędzia wtyczek, gdy próbowałem naprawić inny problem, usuwając go pozbyłem się błędu kompilacji „Konwersja do formatu Dalvik nie powiodła się z błędem 1”:
źródło
Dla mnie na mojej ścieżce kompilacji pojawiło się dodatkowe odniesienie do JAR. Usunąłem to i działa teraz.
źródło
Mój problem był spowodowany przez ADT w wersji 12.0 i integrację ProGuard. Ten błąd jest dobrze udokumentowany, a rozwiązanie znajduje się w dokumentacji
Rozwiązanie jest tutaj
Linia poleceń ProGuard
źródło
Rozwiązałem ten problem, używając biblioteki Sherlock ActionBar w moim projekcie. Możesz zrobić następujący krok, to dla mnie działa.
Mam nadzieję, że ci to pomoże.
źródło
W moim przypadku problem dotyczy projektu API OpenFeint. Dodałem OpenFeint jako projekt biblioteki:
.
Jest również dodawany do ścieżki kompilacji, narzędzia ADT 16 dają błąd w tym sceneario.
Kliknij prawym przyciskiem myszy swój projekt i kliknij ścieżkę kompilacji, skonfiguruj ścieżkę kompilacji, a następnie zobacz obraz i usuń stąd projekt OpenFeint i wszystko gotowe :)
źródło
Znalazłem coś innego. Android używa
/libs
katalogu do plików JAR. Wielokrotnie widziałem błąd „Konwersja do formatu Dalvik nie powiodło się z błędem 1”, zawsze gdy popełniłem błąd w moich plikach JAR.Teraz zaktualizowałem Roboguice do nowszej wersji, umieszczając nowy plik JAR w
/libs
katalogu i zmieniając ścieżkę klasy do nowej wersji. To spowodowało błąd Dalvik.Kiedy usunąłem jeden z plików JAR Roboguice z
/libs
folderu, błąd zniknął. Najwyraźniej Android pobiera wszystkie pliki JAR/libs
, bez względu na to, które z nich określisz w ścieżce kompilacji Java. Nie pamiętam dokładnie, ale myślę, że Android zaczął/libs
domyślnie korzystać z Androida 4.0 (Ice Cream Sandwich, ICS).źródło
Aktualizacja Proguard do najnowszej wersji rozwiązała to dla mnie.
C:\Program Files (x86)\Android\android-sdk\tools\proguard\
DZIĘKI BOGU!
źródło
Ogólnie wydaje się, że ten problem występuje, gdy w ścieżce kompilacji znajdują się niepotrzebne pliki JAR.
Napotkałem ten problem podczas pracy nad IntelliJ IDEA . Dla mnie tak się stało, ponieważ dodałem biblioteki JUnit i Mockito, które były kompilowane w czasie wykonywania. To musiało być ustawione na „testowanie” we właściwościach modułu.
źródło
Żadne z wcześniej zaproponowanych rozwiązań nie działało dla mnie. W moim przypadku problem pojawił się, gdy przełączyłem się z odwoływania się do folderu z kodem źródłowym biblioteki na używanie biblioteki JAR. Początkowo był projekt biblioteki Androida wymieniony w sekcji Projekt aplikacji Android Właściwości \ strona Android \ Biblioteka, a biblioteka porównywana również w drzewie eksploratora projektu jako łącze do katalogu źródłowego biblioteki.
Po pierwsze usunąłem łącze do katalogu z drzewa projektu i dodałem bibliotekę JAR do ścieżki kompilacji, ale spowodowało to wyjątek.
Prawidłowa procedura to (po zmianie ścieżki kompilacji i umieszczeniu odwołania do źródła biblioteki):
poprawnie usuń link do katalogu źródłowego biblioteki, usuwając faktycznie odwołanie ze strony projektu właściwości aplikacji \ Android
dodanie biblioteki JAR biblioteki do ścieżki kompilacji projektu aplikacji w zwykły sposób.
źródło
Żadne z wymienionych rozwiązań nie działało dla mnie.
Oto gdzie miałem problem:
Dodałem zewnętrzny plik JAR jSoup do ścieżki mojego projektu, najpierw umieszczając go w folderze źródłowym o nazwie „libs”, a następnie klikając go prawym przyciskiem myszy, Ścieżka kompilacji -> dodaj do ścieżki kompilacji. To spowodowało błąd konwersji Dalvik. Powiedział, że „już włączyłem” klasę z tego pliku JAR. Rozejrzałem się po katalogu projektu i stwierdziłem, że miejscem, w którym został „już uwzględniony”, jest
bin
katalog. Usunąłem plik JAR zbin
katalogu i odświeżyłem projekt w Eclipse i błąd zniknął!źródło
Wszystkie powyższe rozwiązania nie działały dla mnie. Nie używam żadnych wstępnie skompilowanych plików .jar. Używam błędów LVL i Dalvik, gdzie wszystkie związane są z biblioteką licencji rynkowych.
Problem został rozwiązany przez usunięcie głównego projektu i ponowne importowanie (utwórz nowy projekt z istniejących źródeł).
źródło
Miałem ten sam problem i żadne z tych rozwiązań nie zadziałało. Wreszcie zobaczyłem w konsoli, że błąd był spowodowany zduplikowaną klasą (jedna w istniejącym projekcie, jedna w dodanym pliku jar):
Więc sprawdź, czy dodajesz słoik ze zduplikowanymi klasami w swoim projekcie. Jeśli tak, spróbuj usunąć jeden z nich.
To zadziałało dla mnie.
źródło
Często dla mnie czyszczenie projektu NIE naprawia tego problemu.
Ale zamknięcie projektu w Eclipse, a następnie jego ponowne otwarcie wydaje się naprawiać go w tych przypadkach ...
źródło
Wpadłem na ten problem, ale moje rozwiązanie było dwojakie. 1.) Musiałem dodać docelową wersję Androida w ramach projektu -> właściwości -> Android . 2.) Nie miałem wszystkich „dodatków stron trzecich” Google. Kliknij w menedżerze AVD SDK w ramach dostępnych pakietów -> zewnętrzni dodatki -> Google Inc . Pobrałem wszystkie zestawy SDK i to rozwiązało mój problem.
źródło
Używam Androida 1.6 i miałem jeden zewnętrzny plik JAR. To, co zadziałało, to usunięcie wszystkich bibliotek, kliknięcie projektu prawym przyciskiem myszy i wybranie Narzędzia Android -> * Napraw właściwości projektu (które dodało system Android 1.6), a następnie dodaj ponownie zewnętrzny plik JAR.
źródło
Natknąłem się na ten problem, ponieważ wtyczka Android-Maven w Eclipse najwyraźniej nie rozpoznawała referencji przechodnich i referencji, do których odwoływały się dwa razy z kilku projektów (w tym projektu biblioteki Androida), i obejmowała je więcej niż raz. Musiałem użyć hokusa-pokusa, aby wszystko zawrzeć tylko raz, mimo że Maven ma się tym zająć.
Na przykład miałem podstawową bibliotekę globalmentor-core, która była również używana przez globalmentor-google i globalmentor-android (z których ta ostatnia jest biblioteką Androida). W globalmentor-android
pom.xml
musiałem oznaczyć zależność jako „pod warunkiem”, a także wykluczyć z innych bibliotek, w których został przejściowo włączony:Następnie w końcowej aplikacji
pom.xml
musiałem zastosować właściwą sztuczkę, aby umożliwić tylko jedną ścieżkę włączenia --- a także nie zawierać jawnie biblioteki podstawowej:źródło
<extractDuplicates>true</extractDuplicates>
we wtyczce android-maven naprawiono problem,mvn install
ale nie wmvn deploy
przypadku, gdy dostałem opisany błąd ... naprawdę dziwneW moim przypadku
project-> właściwości-> ścieżka kompilacji Java -> w zakładce kolejności i eksportu -> odznacz android-support-v4.jar
źródło
Po prostu wyczyść projekt
Jeśli to nie zadziała, wypróbuj inne rozwiązania
źródło