Wie hier erwähnt , unterstützt Android M die Apache HTTP-API nicht. In den Dokumenten heißt es:
Verwenden Sie stattdessen die Klasse HttpURLConnection.
oder
Um die Apache-HTTP-APIs weiterhin verwenden zu können, müssen Sie zunächst die folgende Abhängigkeit zur Kompilierungszeit in Ihrer build.gradle-Datei deklarieren:
android {useLibrary 'org.apache.http.legacy'}
Ich habe einen Großteil der Verwendung von HttpClient in meinem Projekt in HttpURLConnection konvertiert, muss den HttpClient jedoch in einigen Bereichen noch verwenden. Daher versuche ich, 'org.apache.http.legacy' als Abhängigkeit zur Kompilierungszeit zu deklarieren, erhalte jedoch einen Fehler in build.gradle:
Gradle DSL-Methode nicht gefunden: 'useLibrary ()'
Meine Frage lautet: Wie deklariere ich 'org.apache.http.legacy' als Abhängigkeit zur Kompilierungszeit in meinem Projekt?
Jede Hilfe wird sehr geschätzt. Vielen Dank
quelle
1.3.0-rc2
. Sie können auch die Apache-eigene Android-kompatible Edition von HttpClient verwenden .1.0.0
dasuseLibrary
Ding hat. Es ist möglich, dass es sich vor 1.3.x eingeschlichen hat, sodass Sie versuchen können1.2.3
(AFAIK, die neueste Produktionsversion) und sehen können, was passiert.1.3.0-rc2
(oder etwas Neueres, wenn es eines gibt).Antworten:
Für API 23:
Top level build.gradle - /build.gradle
Modulspezifisches build.gradle - /app/build.gradle
Offizielle Dokumente (zur Vorschau): http://developer.android.com/about/versions/marshmallow/android-6.0-changes.html#behavior-apache-http-client
Neuestes Änderungsprotokoll für Android Gradle Plugins: http://tools.android.com/tech-docs/new-build-system
quelle
useLibrary
in Ihrer app-spezifischen Build-Datei befinden muss.packagingOptions {}
Block innerhalb desandroid
Blocks hinzufügen , innerhalb dieses Blocks hinzufügenexclude 'META-INF/LICENSE'
... (jede Zeile pro duplizierte Datei gemeldet)Eine andere Alternative besteht darin, nur die jbundle-Abhängigkeit hinzuzufügen. Dies ist Android Studio-freundlicher, da Android Studio nicht die Meldung "Symbol kann nicht aufgelöst werden ..." anzeigt.
quelle
Hinweis für Android 9 (Pie).
Zusätzlich
useLibrary 'org.apache.http.legacy'
müssen Sie in AndroidManifest.xml hinzufügen:Quelle: https://developer.android.com/about/versions/pie/android-9.0-changes-28
quelle
Fügen Sie in Ihrer build.gradle-Datei useLibrary 'org.apache.http.legacy' gemäß
Android 6.0 Changes
>Apache HTTP Client Removal
notes hinzu.Um fehlende Linkfehler zu vermeiden, fügen Sie Abhängigkeiten hinzu
mit 'vorausgesetzt' wird die abhängigkeit nicht in die apk aufgenommen
quelle
Einfach kopierte Datei:
org.apache.http.legacy.jar
vonAndroid/Sdk/platforms/android-23/optional
Ordner in Projektordnerapp/libs
.Hat wie ein Zauber für 23.1.1 funktioniert.
quelle
Ich habe dieses Problem folgendermaßen gelöst:
1.) Legen Sie den Klassenpfad in der Build-Datei der obersten Ebene wie in der GUG angegeben fest:
2.) In der Build-Datei eines bestimmten Moduls:
quelle
Da die Antworten etwas alt sind, werde ich meine Lösung (was für mich funktioniert hat) einfügen, es kann für jemand anderen hilfreich sein ... Ich habe meine Lösung aus der offiziellen Dokumentation von Apache entnommen, keine Umgehung.
1 / in Gradle:
2 / im Rest der App ersetzen Sie das
org.apache.http
durchcz.msebera.android.httpclient
und alle Ihre Importe (Abhängigkeiten) werden behoben. Sie können einfach Strg + Umschalt + R drücken und es im gesamten Projekt ersetzen.quelle
es sollte helfen:
Um fehlende Linkfehler zu vermeiden, fügen Sie Abhängigkeiten hinzu
oder
weil
quelle
FWIW das Entfernen der Apache-Bibliothek wurde vor einiger Zeit vorhergesagt. Unser guter Freund Jesse Wilson gab uns 2011 einen Hinweis: http://android-developers.blogspot.com/2011/09/androids-http-clients.html
Google hat vor einiger Zeit die Arbeit an ApacheHTTPClient eingestellt. Daher sollte jede Bibliothek, die sich noch darauf verlässt, in die Liste der veralteten Bibliotheken aufgenommen werden, es sei denn, die Betreuer aktualisieren ihren Code.
<rant>
Ich kann Ihnen nicht sagen, wie viele technische Argumente ich mit Leuten hatte, die darauf bestanden, beim Apache HTTP-Client zu bleiben. Es gibt einige wichtige Apps, die kaputt gehen werden, weil das Management meiner nicht zu nennenden früheren Arbeitgeber nicht auf ihre Top-Ingenieure gehört hat oder wusste, wovon sie sprachen, als sie die Warnung ignorierten ... aber Wasser unter die Brücke.Ich gewinne.
</rant>
quelle
Um die Probleme zu beheben, stellen Sie sicher, dass Sie die Build-Tools-Version "23.0.0 rc2" mit den folgenden Tools verwenden, um die Gradle-Abhängigkeit zu erstellen:
quelle