Jak mogę używać zewnętrznych plików JAR w projekcie Android?

326

Utworzyłem projekt na Androida i do mojego projektu dodałem zewnętrzny plik JAR (hessian-4.0.1.jar). Następnie dodałem plik JAR do ścieżki kompilacji i zaznaczyłem go w polu Zamów i eksportuj.

Wydaje się, że zamówienie i eksport są ignorowane, a podczas uruchamiania brakuje wszystkich klas z zewnętrznego pliku JAR.

Czy istnieje sztuczka, aby poprawnie dołączyć potrzebne klasy z zewnętrznego pliku JAR podczas budowania aplikacji dla systemu Android przy użyciu wtyczki Eclipse? Nie chcę używać mrówki ani Mavena.

AndroidSmoker74
źródło
1
jak już się przekonałeś: jest to spowodowane zależnościami w hessian-4.0.1.jar. Jeśli chcesz używać Hesji z Androidem, użyj Hessdroid ( code.google.com/p/hessdroid ). Nie bardzo aktywny, ale działa dobrze nawet dla Androida 4.0.
Ice09 12.01.12
1
Zobacz także „NoClassDefFoundError dla kodu w bibliotece Java na Androidzie”, aby zapoznać się z częstym problemem podczas używania zewnętrznych słoików. Proste rozwiązanie .
Flow

Odpowiedzi:

443

Dla Eclipse

Dobrym sposobem na dodanie zewnętrznych plików JAR do projektu Android lub dowolnego projektu Java jest:

  1. Utwórz folder o nazwielibs w folderze głównym projektu
  2. Skopiuj pliki JAR do libsfolderu
  3. Teraz kliknij prawym przyciskiem myszy plik Jar, a następnie wybierz Ścieżka kompilacji> Dodaj do ścieżki kompilacji , która utworzy folder o nazwie „Biblioteki referencyjne” w twoim projekcie

    W ten sposób nie stracisz bibliotek, do których istnieją odniesienia na dysku twardym, za każdym razem, gdy przenosisz projekt na inny komputer.

Dla Androida Studio

  1. Jeśli jesteś w widoku Android w eksploratorze projektów, zmień go na Widok projektu, jak poniżej

Brak obrazu

  1. Kliknij prawym przyciskiem myszy żądany moduł, do którego chcesz dodać bibliotekę zewnętrzną, a następnie wybierz Nowy> Directroy i nazwij go jako „ libs
  2. Teraz skopiuj plik blah_blah.jar do bibliotek lib folderu ”
  3. Kliknij prawym przyciskiem myszy plik blah_blah.jar, a następnie wybierz opcję „ Dodaj jako bibliotekę .. ”. Spowoduje to automatyczne dodanie i wpisanie do build.gradle jako plików kompilacji ('libs / blah_blah.jar') i zsynchronizowanie stopnia. I gotowe

Uwaga: Jeśli korzystasz z bibliotek stron trzecich, lepiej użyć zależności przechodnich których skrypt Gradle automatycznie pobiera plik JAR i plik JAR zależności po uruchomieniu skryptu gradle.

Przykład: kompiluj „com.google.android.gms: play-services-ads: 9.4.0”

Przeczytaj więcej o zarządzaniu stopniem zależności

Vinayak Bevinakatti
źródło
49
Uwaga: w przypadku korzystania z najnowszych wersji Eclipse / ADT zewnętrzne słoiki muszą znajdować się w folderze o nazwie libs(zamiast lib)
THelper
4
@THelper - Dzięki! Masz rację, folder musi mieć nazwę „libs”, a nie „lib”. Waliłem głową w ten problem.
Camille Sévigny,
7
W najnowszych wersjach zestawu SDK krok 3 (ręczne dodawanie pliku JAR do ścieżki kompilacji) nie jest konieczny. Ale jeśli masz IDE, takie jak Eclipse otwarte w momencie upuszczania pliku, będziesz musiał wykonać odświeżenie projektu (F5 i / lub menu kontekstowe Odśwież w Eksploratorze pakietów).
Jon Adams
4
Jak to zrobić z wiersza poleceń? Jaki plik konfiguracyjny muszę edytować i jak?
Kristian Spangsege,
13
To podejście jest nieaktualne od początku 2012 roku. Wystarczy dodać JAR do libs/. Nie modyfikuj ręcznie ścieżki kompilacji.
CommonsWare
127

Tak, możesz go użyć. Oto jak:

  1. Twój projekt -> kliknij prawym przyciskiem myszy -> Importuj -> System plików -> twojar.jar
  2. Twój projekt -> kliknij prawym przyciskiem myszy -> Właściwości -> Ścieżka kompilacji Java -> Biblioteki -> Dodaj jar -> twojar.jar

Ten film może być przydatny na wypadek problemów.

MannyNS
źródło
5
To podejście jest nieaktualne od początku 2012 roku. Wystarczy dodać JAR do libs /. Nie modyfikuj ręcznie ścieżki kompilacji.
CommonsWare
Próbowałem różnych sposobów dodawania ścieżki kompilacji. Tylko w ten sposób mogę naprawić wyjątek Nie znaleziono klasy po migracji jednego projektu na inny komputer
Mickey
PIERWSZE rozwiązanie jest przestarzałe i nie będzie działać tak dobrze.
Yousha Aleayoub
5

Obecnie używam SDK 20.0.3 i żadne z poprzednich rozwiązań nie działało dla mnie.

Powodem, dla którego hessdroid działa tam, gdzie zawiódł, jest to, że dwa pliki jar zawierają Javę skompilowaną dla różnych maszyn wirtualnych. Nie można zagwarantować, że kod bajtu utworzony przez kompilator Java zostanie uruchomiony na maszynie wirtualnej Dalvik. Nie można zagwarantować, że kod bajtu utworzony przez kompilator Androida działa na maszynie wirtualnej Java.

W moim przypadku miałem dostęp do kodu źródłowego i byłem w stanie utworzyć dla niego plik jar dla systemu Android za pomocą metody opisanej tutaj: https://stackoverflow.com/a/13144382/545064

Danny Remington - OMS
źródło
5

Wiem, że OP kończy swoje pytanie odniesieniem do wtyczki Eclipse, ale przybyłem tutaj z wyszukiwaniem, który nie określał Eclipse. Tak więc idzie o Android Studio:

  1. Dodaj jarplik do katalogu libs (np. Kopiuj / wklej)
  2. Kliknij jarplik prawym przyciskiem myszy i wybierz „Dodaj jako bibliotekę ...”
  3. kliknij „OK” w następnym oknie dialogowym lub zmień nazwę, jeśli chcesz.

Otóż ​​to!

shanabus
źródło
4

Okazuje się, że nie sprawdziłem wystarczająco dobrze śladu stosu, problemem nie jest to, że zewnętrzny plik JAR nie został uwzględniony.

Problem polega na tym, że na platformie Android brakuje javax.naming. * I wielu innych pakietów, które również zależą od zewnętrznego JAR.

Dodanie zewnętrznych plików JAR oraz ustawienie Zamów i eksportuj w Eclipse działa zgodnie z oczekiwaniami w projektach na Androida.


źródło
3

Przejdź do bieżącego projektu

RightClick-> Właściwości-> Ścieżka kompilacji Java-> Dodaj pliki jar do bibliotek -> Kliknij OK

Następnie jest dodawany do pliku bibliotek referencyjnych w bieżącym projekcie.

kalyan G.
źródło
1

Interfejs Java API Androida nie obsługuje javax.naming. * I wielu innych rzeczy javax. *. Musisz uwzględnić zależności jako osobne słoiki.

Rodrigo
źródło
1

Jeśli korzystasz z Android Studio, wykonaj następujące czynności (Skopiowałem i zmodyfikowałem odpowiedź na @Vinayak Bs):

  1. Wybierz widok projektu w widoku bocznym projektu (zamiast pakietów lub Androida)
  2. Utwórz folder o nazwie libs w folderze głównym projektu
  3. Skopiuj pliki JAR do folderu libs
  4. Widok boczny zostanie zaktualizowany, a pliki JAR pojawią się w twoim projekcie
  5. Teraz kliknij prawym przyciskiem myszy każdy plik JAR, który chcesz zaimportować, a następnie wybierz „Dodaj jako bibliotekę ...”, która uwzględni go w twoim projekcie
  6. Następnie wystarczy odwołać się do nowych klas w kodzie, np. import javax.mail.*
kumaheiyama
źródło
1

w Android Studio, jeśli używasz gradle

dodaj to do build.gradle

compile fileTree(dir: 'libs', include: ['*.jar'])

i dodaj plik jar do folderu libs

g_vk
źródło
1

Jeśli używasz systemu budowania stopni , wykonaj następujące kroki:

  1. umieść jarpliki w odpowiednim libsfolderze aplikacji na Androida. Będziesz zazwyczaj znaleźć w Project> app> libs. Jeśli libsbrakuje folderu, utwórz go.

  2. dodaj to do swojego build.gradlepliku app. (Nie do Project„s build.gradle)

    dependencies {
        compile fileTree(dir: 'libs', include: '*.jar')
        // other dependencies
    }

    Obejmie to wszystkie twoje jarpliki dostępne w libsfolderze.

Jeśli nie chcesz dołączać wszystkich jarplików, możesz dodać je indywidualnie.

compile fileTree(dir: 'libs', include: 'file.jar')

Rohit Arya
źródło
0

utwórz folder (np. lib) w swoim projekcie, skopiuj słoik do tego folderu . teraz przejdź do konfiguracji ścieżki kompilacji klikając prawym przyciskiem myszy projekt, tam w ścieżce kompilacji wybierz

„dodaj słoik” przejdź do utworzonego folderu i wybierz słoik.

sharma_kunal
źródło
0

Kopiowanie pliku .jar do folderu projektu Android nie zawsze jest możliwe.
Zwłaszcza jeśli jest to wynik innego projektu w twoim obszarze roboczym i ciągle się aktualizuje.

Aby rozwiązać ten problem, musisz dodać słoik jako plik połączony do swojego projektu, zamiast importować go (który skopiuje go lokalnie).

W interfejsie użytkownika wybierz:

Projekt -> Importuj -> System plików -> twojar.jar -> (Obszar opcji) Zaawansowane -> Utwórz łącze w obszarze roboczym.

Link zostanie zapisany w pliku .project :

<linkedResources>
    <link>
        <name>yourjar.jar</name>
        <type>1</type>
        <locationURI>PARENT-5-PROJECT_LOC/bin/android_ndk10d_armeabi-v7a/yourjar.jar</locationURI>
    </link>
</linkedResources>

PARENT-5-PROJECT_LOC oznacza w stosunku do pliku projektu, 5 katalogów w górę (../../../../../).

Następnie dodaj go do bibliotek:
Projekt -> Właściwości -> Ścieżka kompilacji Java -> Biblioteki -> Dodaj jar -> twojar.jar

W tym samym oknie wybierz kartę Zamów i eksportuj i zaznacz swój słoik, aby został dodany do apk.

Yochai Timmer
źródło