Próbuję przekonwertować projekt IntelliJ do systemu Gradle w Android Studio, ale mam problemy z Apache HttpClient? Czy coś pomijam, otrzymuję następujące błędy:
Error:(10, 30) error: package org.apache.http.client does not exist
Error:(11, 30) error: package org.apache.http.client does not exist
Error:(12, 37) error: package org.apache.http.client.entity does not exist
Error:(13, 38) error: package org.apache.http.client.methods does not exist
Error:(14, 38) error: package org.apache.http.client.methods does not exist
Error:(15, 38) error: package org.apache.http.client.methods does not exist
Error:(16, 35) error: package org.apache.http.impl.client does not exist
Error:(134, 33) error: cannot find symbol class HttpUriRequest
Error:(164, 39) error: cannot find symbol class HttpUriRequest
Error:(106, 17) error: cannot find symbol class HttpGet
Error:(106, 39) error: cannot find symbol class HttpGet
Error:(117, 17) error: cannot find symbol class HttpPost
Error:(117, 40) error: cannot find symbol class HttpPost
Error:(125, 43) error: cannot find symbol class UrlEncodedFormEntity
Error:(135, 9) error: cannot find symbol class HttpClient
Error:(135, 33) error: cannot find symbol class DefaultHttpClient
Error:(155, 18) error: cannot find symbol class ClientProtocolException
Error:(165, 9) error: cannot find symbol class HttpClient
Error:(165, 33) error: cannot find symbol class DefaultHttpClient
Error:(185, 18) error: cannot find symbol class ClientProtocolException
Mój plik build.gradle ma następujące zależności:
dependencies {
compile 'com.google.android.gms:play-services:+'
compile 'org.apache.httpcomponents:httpclient:4.2.6'
compile 'org.apache.httpcomponents:httpmime:4.2.6'
compile files('libs/core.jar')
}
Wygląda na to, że wiele osób ma podobny problem, ale ani SO, ani Google nie mają rozwiązania, więc mam nadzieję, że to pytanie pomoże przyszłym wyszukiwarkom.
jeśli używasz docelowego SDK jako 23, dodaj poniższy kod w swoim build.gradle
i zmień skrypt na
Aby uzyskać więcej informacji, kliknij ten link
źródło
Error:(14, 23) error: package org.apache.http does not exist
Miałem ten problem, a następnie znalazłem te strony: Tutaj możesz zobaczyć, że biblioteka Apache jest przestarzała, ale nie została usunięta, więc powinna działać. Tak nie jest.
Zobaczyć .
Tutaj możesz zobaczyć, jak dołączyć bibliotekę Apache do swojego projektu
Zobaczyć .
Rozwiązałem problem, dodając następujące polecenie do mojego pliku build.gradle zgodnie z zaleceniami w drugim łączu.
Działa to jednak tylko wtedy, gdy używasz stopnia 1.3.0-beta2 lub nowszego, więc musisz dodać to do zależności buildscript, jeśli korzystasz z niższej wersji:
Mam nadzieję że to pomoże.
źródło
Dodaj tę bibliotekę do
build.gradle
źródło
build.gradle
, ale raczej do folderu modułu, którykopia,
org.apache.http.legacy.jar
która jest wAndroid/Sdk/platforms/android-23/optional
folderu doapp/libs
a także dodał tę linię do pliku app.gradle
Ale jeśli używasz większej liczby bibliotek jar, możesz skorzystać z tej metody
źródło
Zasadniczo wszystko, co musisz zrobić, to dodać:
Do twojego
build.gradle
pliku.źródło
Natrafiłem na ten sam problem. Odpowiedź Daniela Nugenta nieco pomogła (po zastosowaniu jego rady
HttpResponse
znaleziono - aleHttpClient
nadal jej brak).Oto, co mnie naprawiło:
4.5.1.zip
z sekcji binarnejhttpcore-4.4.3
ihttpclient-4.5.1.jar
wproject/libs
folderzeMam nadzieję, że to pomoże.
źródło
Wystąpiły podobne problemy, być może uda ci się sprawić, że zadziała przy użyciu podobnej metody.
Najpierw spróbuj tego z bieżącą konfiguracją, wyklucz
httpclient
zhttpmime
:W moim przypadku naprawiłem to za pomocą następujących słoików:
Następnie w build.gradle, wyłączając
httpclient
zhttpmime
:źródło
libs/core.jar
?Doskonała odpowiedź Jinu i Daniela
Dodając do tego, rozwiązałem problem za pomocą tego, jeśli Twoja kompilacjaSdkVersion ma 19 (W MOIM PRZYPADKU)
w przeciwnym razie, jeśli Twój compileSdkVersion ma 23 lata, użyj
źródło
To właśnie zrobiłem i działa dla mnie.
krok 1: dodaj to w build.grade (moduł: aplikacja)
krok 2: zsynchronizuj projekt i gotowe.
źródło
Wersja klienta HTTP Apache dostępna na standardowym Androidzie była bardzo stara .
Podczas mogli nadal używać starej przestarzałej biblioteki poprzez
useLibrary 'org.apache.http.legacy'
obejście (sugerowane przez @Jinu i innych), to naprawdę trzeba zacisnąć zęby i aktualizacji na coś innego, na przykład rodzimy AndroidHttpUrlConnection
, lub jeśli nie spełnia Twoich potrzeb, możesz użyć biblioteki OkHttp , która i takHttpUrlConnection
jest wewnętrznie oparta .OkHttp faktycznie ma warstwę kompatybilności, która korzysta z tego samego interfejsu API co klient Apache, chociaż nie implementują wszystkich tych samych funkcji, więc przebieg może się różnić.
Chociaż możliwe jest zaimportowanie nowszej wersji klienta Apache (zgodnie z sugestią @MartinPfeffer), prawdopodobnie większość klas i metod, z których korzystałeś wcześniej, została uznana za przestarzałą i istnieje duże ryzyko, że aktualizacja wprowadzi błędy w twoim kodzie (na przykład znalazłem niektóre połączenia, które wcześniej działały zza proxy nie działały już), więc nie jest to świetne rozwiązanie.
źródło
Po spędzeniu dni na tym temacie udało mi się go w końcu rozwiązać. Niestety potrzebujemy go, jeśli chcemy korzystać z plików rozszerzeń. Rozwiązanie zostało dostarczone przez kilka osób tutaj, ale dla mnie brakowało kilku drobnych szczegółów, które mogłyby zaoszczędzić mi dużo czasu. Oto sekwencja wydarzeń dla nowicjuszy takich jak ja, aby zaoszczędzić Twój cenny czas.
Najpierw zaimportowałem folder „biblioteki” z D: \ Users \ Imre \ AppData \ Local \ Android \ sdk1 \ extras \ google \ play_licensing do projektu, przechodząc do opcji Plik, Nowy, Importuj moduł i przechodząc do folderu „biblioteka”. Jeśli otworzysz Menedżera SDK i klikniesz „Uruchom samodzielnego Menedżera SDK” na dole wyskakującego okienka, możesz najechać wskaźnikiem myszy na folder „Dodatki” na dole, a mała żółta informacja powie ci, gdzie znajdziesz pakiet, który musisz zaimportować.
Po wykonaniu tej czynności przejdź do sekcji „biblioteka” w lewym okienku z „Projektem”, a w niej otwórz kartę „Android”. Otwórz sekcję java biblioteki i otwórz klasę APKExpansionPolicy. Jeśli masz błędy i import org.apache.http.NameValuePair i import org.apache.http.client.utils.URLEncodedUtils są jasnoszare, otwórz build.gradle (Projekt: cokolwiek) i upewnij się, że w „buildscript” w „zależnościach” znajduje się „ścieżka klasy” com.android.tools.build:gradle:1.5.0 ”. 1.5.0 może się różnić w twoim przypadku. Myślę, że to zależy od twojej wersji Studio. Mój to 1.5.1. Jeśli twój jest nowszy, pojawi się przypomnienie o aktualizacji numerów.
Następnie przejdź do „build.gradle (Module: library) i dołącz„ useLibrary ”org.apache.http.legacy” do sekcji „android”. Synchronizuj teraz (prawy górny róg) powinien być oferowany. Zrób to.
Jeśli pojawią się kolejne komunikaty o błędach (nie wiedziałbym tego, ponieważ zrobiłem to na odwrót), w twoim projekcie mogą brakować plików Apache, ponieważ apache nie jest już obsługiwany. Znajdź je w C / D: Users / Yourname / AppData / Local / Android / Sdk / platform / android-23 / opcjonalnie i skopiuj / wklej je do folderu projektu / aplikacji / libs. Powinieneś mieć tam plik opcjonalny.json i org.apache.http.legacy.jar. Lepiej pójdź na stronę apache i pobierz najnowszą wersję: http://hc.apache.org/downloads.cgi Rozpakuj go gdziekolwiek chcesz, otwórz go, przejdź do „lib”, skopiuj httpclient-4.5.1 .jar i zastąp go plikiem org.apache.http.legacy.jar.
Zsynchronizuj i przebuduj / wyczyść swój projekt. Warto zacząć.
Na wszelki wypadek otwórz terminal (L / H na dole Android Studio) i wpisz „gradlew clean”. Zainstaluje kilka rzeczy. Po zakończeniu wpisz „gradlew asemble”. Ukończenie zajmie kilka minut, ale da ci błędy, jeśli tak, oczywiście. Jeśli nie możesz wpisać niczego w terminalu, uruchom wiersz polecenia (przycisk Windows + R), wpisz cmd, naciśnij OK, kliknij prawym przyciskiem myszy tytuł małego czarnego wyskakującego ekranu (C: \ WINDOWS \ system32 \ cmd.exe) , Właściwości, Opcje, w dolnej części okna sprawdź, czy „Użyj starszej konsoli” jest pogrubiony. Uruchom ponownie A.Studio.
Powodzenia!
źródło
Musiałem pisać, ponieważ żadna z powyższych odpowiedzi nie działała dla mnie całkowicie.
Korzystam z Android Studio
Krok 1: Pobierz ostatni plik jar ( http://www-eu.apache.org/dist//httpcomponents/httpclient/binary/httpcomponents-client-4.5.2-bin.zip )
Krok 2: Skopiuj wklej plik .jar do folderu libs (utwórz, jeśli jeszcze nie istnieje) w swoim module (może to być aplikacja lub biblioteka)
Krok 3: Kliknij słoik prawym przyciskiem myszy i wybierz opcję „Dodaj jako bibliotekę”. Automatycznie doda plik jar jako zależność w pliku stopni twojego modułu
Krok 4: Teraz automatycznie twój problem zostanie rozwiązany, ale jeśli używasz proguard w swojej aplikacji, wyświetli ostrzeżenie o zduplikowanych plikach klas i nie pozwoli ci budować. Jest to znany błąd i należy dodać następujące zasady do reguł proguard
Powodzenia!
źródło
W moim przypadku zaktualizowałem jedną z moich bibliotek w moim projekcie na Androida.
Używam Reservoir jako rozwiązania pamięci podręcznej: https://github.com/anupcowkur/Reservoir
Wyszedłem z:
Do:
Autor biblioteki musiał usunąć bibliotekę commons-io z repozytorium, aby moja aplikacja przestała działać.
Musiałem ręcznie dołączyć commons-io, dodając to do gradle:
https://mvnrepository.com/artifact/commons-io/commons-io/2.5
źródło
Sklonowałem następujące: https://github.com/google/play-licensing
Następnie zaimportowałem to do mojego projektu.
źródło