Jar Mismatch Znaleziono 2 wersje android-support-v4.jar na liście zależności

130

Próbuję stworzyć 2 wersje aplikacji na Androida (darmowe / płatne). Mam bibliotekę Androida, która zawiera pliki wspólne dla obu. Utworzyłem nowy projekt na Androida i próbuję użyć biblioteki, ale pojawia się następujący błąd:

Found 2 versions of android-support-v4.jar in the dependency list,
but not all the versions are identical (check is based on SHA-1 only at this time).
All versions of the libraries must be the same at this time.
Versions found are:
Path: /Users/Zaheer/Developer/App Free/libs/android-support-v4.jar
    Length: 349252
    SHA-1: 612846c9857077a039b533718f72db3bc041d389
Path: /Users/Zaheer/Developer/App Library/libs/android-support-v4.jar
    Length: 337562
    SHA-1: 27c24d26e4c5d57976e6926367985548678e913c

Jakieś pomysły, jak to rozwiązać? Bawiłem się ścieżką kompilacji, która kończy się niepowodzeniem.

Zaheer
źródło
Znalazłem bardzo proste rozwiązanie, które działa w takich sytuacjach, sprawdź moją odpowiedź poniżej
gprathour

Odpowiedzi:

177

Jakieś pomysły, jak to rozwiązać?

Usuń jeden.

Bawiłem się ścieżką kompilacji, która kończy się niepowodzeniem.

Krok 1: Cofnij to wszystko. Jeśli masz problem ze ścieżką kompilacji, na R16 lub wyższej wersji wtyczki ADT dla Eclipse, robisz to źle.

Krok 2: Wybierz jedną z tych dwóch wersji pliku JAR lub wybierz tę z obszaru „dodatki” instalacji SDK.

Krok # 3: Umieść odpowiedni JAR App Library.

Krok # 4: Usuń ten z App Free, ponieważ odbierze ten plik JAR z App Library.

Zamiast tego możesz mieć ten sam rzeczywisty plik JAR w obu miejscach ( App Freei App Library), chociaż zajmuje to dodatkowe miejsce bez powodu.

CommonsWare
źródło
1
@Necronet: Niech wszyscy używają tego samego JARa. Na przykład skopiuj najnowszy do każdego z tych projektów.
CommonsWare
@CommonsWare: jak sprawdzić, który z nich jest najnowszy?
Mehul Joisar
2
@MehulJoisar: To zależy od autorów JAR. W przypadku android-support-v4.jarnajnowszej wersji jest to ta w instalacji SDK.
CommonsWare
5
@MehulJoisar: Nie mogę na to odpowiedzieć. Zwykle pobieram najnowszą android-support-v4.jarwersję z SDK i kopiuję ją do wszystkich projektów biblioteki (plus usuwam ten z SDK).
CommonsWare
1
Właśnie miałem ten problem, ale wydawało się, że wyszedł zupełnie nieoczekiwanie, tak jak kilka innych (trudniejszych) problemów z Eclipse / Androidem. Ta odpowiedź naprawia skutek, ale najwyraźniej nie ustala przyczyny.
Joe Lapp
24
  1. Usuń android-support-v4.jar z App Free
  2. Dodaj ten sam plik z App Library do App Free
Lee Chun Hoe
źródło
@Lee Chun Hoe, czy możesz mi powiedzieć, jak przejść tą ścieżką w MAC OS. Chcę usunąć android-support-v4.jar.
Rakesh
@Rakesh W Eksploratorze pakietów Eclipse rozwiń projekt, w folderze libs, usuń ten plik android-support-v4.jar.
Lee Chun Hoe
12

Powyższe rozwiązania w większości rozwiązują problem. po zastosowaniu tych rozwiązań problem nadal występuje. Następnie

PRZEJDŹ do folderu projektu -> libs-> i usuń „android-support-v4.jar”

Mam nadzieję, że to rozwiąże twój problem, tak jak rozwiązał mój problem.

Nauman Khalid
źródło
11

Istnieje kilka scenariuszy, w których masz wiele projektów bibliotek, które mają ścieżki android-support-v4.jarw ich libsi kompilacji, a projekt ma zależność od obu z nich. Załóżmy na przykład, że w moim przypadku mam następujące projekty biblioteczne w moim obszarze roboczym,

  • libfacebook
  • libsherlockactionbar

Oba te projekty są niezależne, a mój project.propertieswygląd wygląda następująco,

# Project target.
target=android-17
android.library.reference.1=../libfacebook
android.library.reference.2=../libsherlockactionbar

Kiedy buduję projekt, pojawia się problem z niezgodnością jar z powielonymi odwołaniami do dwóch kopii tego samego pliku. To, co zrobiłem, aby rozwiązać ten problem, jest trochę podstępem. Utworzyłem nowy projekt biblioteki nazwany libcommonsjako nadrzędny dla wszystkich innych projektów biblioteki w moim obszarze roboczym, w tym libfacebooki libsherlockactionbar. Potem usunięto bibliotekę wsparcie od wszystkich innych projektów i przechowywane tylko jedna kopia wewnątrz libcommons„s libs folderu. Następnie dodałem libcommonsjako odniesienie do wszystkich moich innych projektów bibliotecznych. Po wyczyszczeniu mojego miejsca pracy wszystko działa jak urok.

Subin Sebastian
źródło
8

To bardziej elegancka poprawka niż usuwanie i dodawanie plików!

Musisz tylko:

  1. Kliknij prawym przyciskiem myszy projekt App Free
  2. Przejdź do „Narzędzia Androida”> „Dodaj bibliotekę pomocy”
  3. Zatwierdź uprawnienia i pozwól zaktualizować bibliotekę
  4. Powtórz ten proces dla biblioteki aplikacji projektu

Biblioteka obsługi Androida zostanie wówczas zsynchronizowana (:

Cokeby190
źródło
Dziękuję - to rozwiązało mój problem. Musiałem dodać BaseGameUtils i dostałem ten błąd :)
neowhoru
@neowhoru, nie ma problemu! Cieszę się, że
mogę
1
cieszę się, że pomogło @MuhammedRefaat! (:
cokeby190
7

BARDZO PROSTE ROZWIĄZANIE

Bardzo proste rozwiązanie zadziałało w moim przypadku, po prostu skopiuj ten sam plik jar (android-support-v4.jar) do wszystkich projektów. Nie będzie już konfliktu.

1 Skopiuj plik jar android-support-v4.jar z folderu libs dowolnego projektu.

2 Usuń plik jar android-support-v4.jar z folderu libs drugiego projektu, który już istnieje.

3 Wklej nowo skopiowany plik jar pierwszego projektu do folderu libs drugiego projektu.

Problem z niezgodnością słoików zostanie już rozwiązany.

gprathour
źródło
5

Po prostu skopiuj bibliotekę z jednego projektu do drugiego. Może sygnatura czasowa musi być taka sama na obu.

Rafael Sanches
źródło
4

Rozkład:

  1. Kliknij prawym przyciskiem myszy projekt „bezpłatny”> Narzędzia systemu Android> Dodaj bibliotekę wsparcia.
  2. Zrób to samo z „płatnym” projektem.
  3. Wyczyść wszystkie projekty
strawberrywine
źródło
2

Sprawdź, czy są otwarte dla Ciebie nieistotne projekty, bo tak było w przypadku mnie, wydawało się, że jeden z plików JAR był powiązany z innym projektem, nad którym nie pracowałem, więc właśnie zamknąłem ten projekt, zrobiłem porządek kompilacja projektu, nad którym pracuję i już nie miałem problemu! Mam nadzieję, że to komuś pomoże!

Arturas M
źródło
1

Użyj tego samego słoika podczas dodawania zewnętrznych słoików w bibliotece i projekcie

Pratik Kanade
źródło
1

cóż ... to działa u mnie:

Iść do

Folder projektu> libs

następnie usuń „android-support-v4.jar”

Następnie

projekt> Wyczyść

To będzie działać!

Erick Guerrero
źródło
1

Po prostu miałem ten problem, ale zamiast usunąć konflikt z android-support-v4.jar , po prostu zmieniłem jego nazwę na android-support-v4_PROJECT.jar , co usunęło konflikt.

Jeśli zastanawiasz się, jak zmienić nazwę pliku w Eclipse, wystarczy zaznaczyć plik i nacisnąć F2.

eBehbahani
źródło
0

Musisz tylko mieć dokładnie taką samą sumę kontrolną android-support-v4.jar w każdym swoim projekcie. W tym celu możesz skopiować / wkleić jeden z nich we wszystkich swoich projektach / bibliotekach będących w konflikcie.

Nie ma nic innego do roboty, posprzątaj i ciesz się :)

tryp
źródło
0

Możesz otworzyć 2 projekty w tym samym czasie (oba przy użyciu android-support-v4.jar). I close 1 project and every thing ok

Szary Wilk
źródło