Jak wspomniano tutaj , system Android M nie będzie obsługiwał interfejsu API Apache HTTP. Dokumenty zawierają następujące informacje:
zamiast tego użyj klasy HttpURLConnection.
lub
Aby kontynuować korzystanie z interfejsów API Apache HTTP, musisz najpierw zadeklarować następującą zależność w czasie kompilacji w pliku build.gradle:
android {useLibrary 'org.apache.http.legacy'}
Przekonwertowałem wiele elementów HttpClient używanych w moim projekcie na HttpURLConnection, jednak nadal muszę używać HttpClient w kilku obszarach. Dlatego próbuję zadeklarować „org.apache.http.legacy” jako zależność czasu kompilacji, ale otrzymuję błąd w pliku build.gradle:
Nie znaleziono metody Gradle DSL: „useLibrary ()”
Moje pytanie brzmi: jak zadeklarować „org.apache.http.legacy” jako zależność czasu kompilacji w moim projekcie?
Każda pomoc jest bardzo ceniona. Dzięki
źródło
1.3.0-rc2
. Możesz również rozważyć użycie własnej wersji HttpClient zgodnej z systemem Android Apache .1.0.0
takuseLibrary
było. Możliwe, że wkradł się przed 1.3.x, więc możesz spróbować1.2.3
(AFAIK, najnowsza wersja produkcyjna) i zobaczyć, co się stanie.1.3.0-rc2
(lub czegoś nowszego, jeśli istnieje).Odpowiedzi:
W przypadku interfejsu API 23:
Najwyższy poziom build.gradle - /build.gradle
Build.gradle dla konkretnego modułu - /app/build.gradle
Oficjalne dokumenty (do podglądu): http://developer.android.com/about/versions/marshmallow/android-6.0-changes.html#behavior-apache-http-client
Najnowsza lista zmian wtyczek Android Gradle: http://tools.android.com/tech-docs/new-build-system
źródło
useLibrary
musi znajdować się w pliku kompilacji konkretnej aplikacji.packagingOptions {}
blok wewnątrzandroid
bloku, wewnątrz tego bloku, dodajexclude 'META-INF/LICENSE'
... (każda linia na zduplikowany plik zgłoszony)Inną alternatywą jest po prostu dodanie zależności jbundle. Jest to bardziej przyjazne dla Android Studio, ponieważ Android Studio nie wyświetla komunikatu „nie można rozwiązać symbolu ...”
źródło
Uwaga dla Androida 9 (Pie).
Dodatkowo
useLibrary 'org.apache.http.legacy'
musisz dodać w AndroidManifest.xml:Źródło: https://developer.android.com/about/versions/pie/android-9.0-changes-28
źródło
W pliku build.gradle dodaj useLibrary 'org.apache.http.legacy' zgodnie z
Android 6.0 Changes
>Apache HTTP Client Removal
uwagami.Aby uniknąć błędów brakujących linków, dodaj zależności
przy użyciu „pod warunkiem” zależność nie zostanie uwzględniona w apk
źródło
Właśnie skopiowany plik:
org.apache.http.legacy.jar
zAndroid/Sdk/platforms/android-23/optional
folderu do folderu projektuapp/libs
.Działało jak urok przez 23.1.1.
źródło
Rozwiązałem ten problem w ten sposób:
1.) Ustaw ścieżkę klasy w pliku kompilacji najwyższego poziomu, jak wspomniał GUG:
2.) W pliku kompilacji konkretnego modułu:
źródło
Ponieważ odpowiedzi są trochę stare, umieszczę moje rozwiązanie (które zadziałało dla mnie), może być pomocne dla kogoś innego ... Swoje rozwiązanie zaczerpnąłem z oficjalnej dokumentacji Apache, bez obejścia.
1 / w klasie:
2 / w pozostałej części aplikacji zamień
org.apache.http
by,cz.msebera.android.httpclient
a wszystkie importowane elementy (zależności) zostaną naprawione. możesz po prostu zrobić ctrl + shift + R i zastąpić go w całym projekcie.źródło
powinno pomóc:
Aby uniknąć błędów brakujących linków, dodaj zależności
lub
ponieważ
źródło
FWIW zapowiedziano usunięcie biblioteki Apache jakiś czas temu. Nasz dobry przyjaciel Jesse Wilson dał nam wskazówkę w 2011 roku: http://android-developers.blogspot.com/2011/09/androids-http-clients.html
Google przestał pracować nad ApacheHTTPClient jakiś czas temu, więc każda biblioteka, która wciąż na nim polega, powinna zostać umieszczona na liście przestarzałych bibliotek, chyba że opiekunowie zaktualizują swój kod.
<rant>
Nie potrafię powiedzieć, ile technicznych kłótni miałem z ludźmi, którzy nalegali na trzymanie się klienta HTTP Apache. Jest kilka poważnych aplikacji, które się zepsują, ponieważ kierownictwo moich poprzednich pracodawców nie słuchało ich najlepszych inżynierów lub nie wiedziało, o czym mówią, kiedy zignorowali ostrzeżenie ... ale woda pod wodą most.Wygrałem.
</rant>
źródło
Aby rozwiązać te problemy, upewnij się, że korzystasz z narzędzi do kompilacji w wersji „23.0.0 rc2” z następującymi narzędziami do kompilacji zależności:
źródło