Ich versuche, ein IntelliJ-Projekt in das Gradle-System von Android Studio zu konvertieren, aber es treten Fehler mit Apache HttpClient auf. Vermisse ich etwas, die Fehler, die ich bekomme, sind wie folgt:
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
Meine build.gradle-Datei weist die folgenden Abhängigkeiten auf:
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')
}
Es scheint, dass viele Leute ein ähnliches Problem haben, aber weder SO noch Google haben eine Lösung. Ich hoffe, dass diese Frage zukünftigen Suchenden helfen wird.
Wenn Sie das Ziel-SDK als 23 verwenden, fügen Sie den folgenden Code in Ihr build.gradle ein
und ändern Sie Ihr Buildscript in
Für weitere Informationen folgen Sie diesem Link
quelle
Error:(14, 23) error: package org.apache.http does not exist
Ich hatte dieses Problem und fand dann diese Seiten: Hier können Sie sehen, dass die Apache-Bibliothek veraltet ist, aber nicht entfernt wurde, also sollte es funktionieren. Das tut es nicht.
Siehe .
Und hier können Sie sehen, wie Sie die Apache-Bibliothek in Ihr Projekt aufnehmen
Siehe .
Ich habe das Problem behoben, indem ich meiner build.gradle-Datei Folgendes hinzugefügt habe, wie im zweiten Link empfohlen.
Dies funktioniert jedoch nur, wenn Sie Gradle 1.3.0-beta2 oder höher verwenden. Sie müssen dies also zu Buildscript-Abhängigkeiten hinzufügen, wenn Sie eine niedrigere Version verwenden:
Hoffe das hilft.
quelle
Fügen Sie diese Bibliothek hinzu
build.gradle
quelle
build.gradle
, sondern in denKopie,
org.apache.http.legacy.jar
die sich imAndroid/Sdk/platforms/android-23/optional
Ordner befindet, nachapp/libs
und fügte diese Zeile auch der Datei app.gradle hinzu
Wenn Sie jedoch mehr JAR-Bibliotheken verwenden, können Sie diese verwenden
quelle
Grundsätzlich müssen Sie nur Folgendes hinzufügen:
Zu Ihrer
build.gradle
Datei.quelle
Ich bin auf das gleiche Problem gestoßen. Daniel Nugents Antwort half ein wenig (nachdem er seinen Rat befolgt hatte,
HttpResponse
wurde er gefunden - aber derHttpClient
fehlte noch).Also hier ist, was es für mich behoben hat:
4.5.1.zip
aus dem binären Abschnitthttpcore-4.4.3
&httpclient-4.5.1.jar
inproject/libs
Ordner einIch hoffe es hilft.
quelle
Ich bin auf ähnliche Probleme gestoßen. Möglicherweise können Sie es mit einer ähnlichen Methode zum Laufen bringen.
Versuchen Sie dies zunächst mit Ihrer aktuellen Konfiguration und schließen Sie Folgendes
httpclient
aushttpmime
:In meinem Fall habe ich das Problem mithilfe der folgenden Gläser behoben:
Dann in der build.gradle, ausgenommen
httpclient
vonhttpmime
:quelle
libs/core.jar
?Perfekte Antwort von Jinu und Daniel
Außerdem habe ich das Problem mithilfe von This gelöst, wenn Ihre compileSdkVersion 19 ist (IN MEINEM FALL).
Andernfalls verwenden Sie, wenn Ihre compileSdkVersion 23 ist
quelle
Das habe ich getan und es funktioniert für mich.
Schritt 1: Fügen Sie dies in die build.grade ein (Modul: App)
Schritt 2: Synchronisieren Sie das Projekt und fertig.
quelle
Die Version des Apache HTTP-Clients, die auf Android verfügbar ist, war sehr, sehr alt .
Während Sie könnten halten die alte veraltete Bibliothek über die Verwendung
useLibrary 'org.apache.http.legacy'
umgehen (vorgeschlagen von @Jinu und andere), die Sie wirklich brauchen die Kugel und aktualisieren , um etwas anderes zu beißen, zum Beispiel die native AndroidHttpUrlConnection
, oder wenn das nicht Ihren Bedürfnissen, können Sie die Verwendung OkHttp Bibliothek , das ist , wasHttpUrlConnection
wird intern auf Basis sowieso.OkHttp verfügt tatsächlich über eine Kompatibilitätsschicht , die dieselbe API wie der Apache-Client verwendet, jedoch nicht alle Funktionen implementiert , sodass Ihre Laufleistung variieren kann.
Während es möglich ist , eine neuere Version des Apache - Client zu importieren (wie von @MartinPfeffer vorgeschlagen), ist es wahrscheinlich , dass die meisten der Klassen und Methoden , die Sie vor veraltet wurden verwendet haben, und es ist ein ziemlich großes Risiko , dass eine Aktualisierung Fehler einführen In Ihrem Code (zum Beispiel habe ich festgestellt, dass einige Verbindungen, die zuvor hinter einem Proxy funktionierten, nicht mehr funktionierten), ist dies also keine großartige Lösung.
quelle
Nachdem ich Tage mit diesem Thema verbracht hatte, gelang es mir, es endlich zu lösen. Leider brauchen wir es, wenn wir Erweiterungsdateien verwenden wollen. Die Lösung wurde von einigen Leuten hier bereitgestellt, aber für mich fehlten den Antworten ein paar kleine Details, die mir viel Zeit hätten sparen können. Hier ist die Abfolge der Ereignisse für Anfänger wie mich, um Ihre kostbare Zeit zu sparen.
Zuerst importierte ich den Ordner "Bibliothek" aus D: \ Benutzer \ Imre \ AppData \ Local \ Android \ sdk1 \ extras \ google \ play_licensing in das Projekt, indem ich in Datei, Neu, Modul importieren ging und zum Ordner "Bibliothek" navigierte. Wenn Sie den SDK-Manager öffnen und unten im Popup-Bildschirm auf "Standalone SDK Manager starten" klicken, können Sie den Mauszeiger über den Ordner "Extras" unten bewegen. Die kleinen gelben Informationen zeigen an, wo Sie sich befinden das Paket, das Sie importieren müssen.
Sobald dies erledigt ist, gehen Sie zum Abschnitt "Bibliothek" im linken Bereich mit "Projekt" und öffnen Sie darin die Registerkarte "Android". Öffnen Sie den Java-Bereich der Bibliothek und öffnen Sie die APKExpansionPolicy-Klasse. Wenn Sie Fehler haben und der Import org.apache.http.NameValuePair und der Import org.apache.http.client.utils.URLEncodedUtils hellgrau sind, öffnen Sie das build.gradle (Projekt: was auch immer) und stellen Sie sicher, dass in "Buildscript" Unter "Abhängigkeiten" ist der "Klassenpfad" com.android.tools.build:gradle:1.5.0 "enthalten. Die 1.5.0 kann in Ihrem Fall anders sein. Ich denke, es hängt von Ihrer Studio-Version ab. Meins ist 1.5.1. Wenn Ihre neuere ist, werden Sie daran erinnert, die Nummern zu aktualisieren.
Gehen Sie danach zu "build.gradle (Modul: Bibliothek) und fügen Sie die" useLibrary "org.apache.http.legacy" in den Abschnitt "android" ein. Jetzt synchronisieren (obere Ecke R / H) sollte angeboten werden. Tu es.
Wenn Sie weitere Fehlermeldungen erhalten (ich würde es nicht wissen, weil ich es umgekehrt gemacht habe), fehlen möglicherweise die Apache-Dateien in Ihrem Projekt, da Apache nicht mehr unterstützt wird. Finden Sie sie in C / D: Benutzer / Name / AppData / Lokal / Android / Sdk / Plattformen / Android-23 / optional und kopieren Sie sie / fügen Sie sie in Ihren Ordner projekt / app / libs ein. Sie sollten eine optionale.json- und eine org.apache.http.legacy.jar-Datei haben. Sie sollten besser auf die Website von Apache gehen und die neueste Version herunterladen : http://hc.apache.org/downloads.cgi Entpacken Sie sie an einer beliebigen Stelle, öffnen Sie sie, gehen Sie zu "lib" und kopieren Sie den httpclient-4.5.1 .jar-Datei und ersetzen Sie die Datei org.apache.http.legacy.jar durch diese.
Synchronisieren und erstellen / bereinigen Sie Ihr Projekt und es sollte gut gehen.
Öffnen Sie für alle Fälle Ihr Terminal (L / H unten in Android Studio) und geben Sie "gradlew clean" ein. Es werden ein paar Dinge installiert. Sobald dies erledigt ist, geben Sie "gradlew assemble" ein. Es wird ein paar Minuten dauern, bis es fertig ist, aber es wird Ihnen die Fehler geben, wenn Sie welche haben. Wenn Sie im Terminal nichts eingeben können, starten Sie die Eingabeaufforderung (Windows-Taste + R), geben Sie cmd ein, klicken Sie auf OK und klicken Sie mit der rechten Maustaste auf den Titel des kleinen schwarzen Popup-Bildschirms (C: \ WINDOWS \ system32 \ cmd.exe). , Eigenschaften, Optionen, überprüfen Sie im unteren Bereich des Fensters, ob "Legacy-Konsole verwenden" dick ist. Starten Sie A.Studio neu.
Viel Glück!
quelle
Ich musste posten, da keine der oben genannten Antworten für mich vollständig funktionierte.
Ich benutze Android Studio
Schritt 1: Laden Sie die letzte JAR-Datei herunter ( http://www-eu.apache.org/dist//httpcomponents/httpclient/binary/httpcomponents-client-4.5.2-bin.zip ).
Schritt 2: Kopieren Sie die JAR-Datei in den libs-Ordner (erstellen, falls noch nicht vorhanden) in Ihrem Modul (kann App oder Bibliothek sein).
Schritt 3: Klicken Sie mit der rechten Maustaste auf das Glas und klicken Sie auf "Als Bibliothek hinzufügen". Die JAR-Datei wird automatisch als Abhängigkeit in die Gradle-Datei Ihres Moduls eingefügt
Schritt 4: Jetzt wird Ihr Problem automatisch behoben. Wenn Sie jedoch Proguard in Ihrer App verwenden, werden Sie vor doppelten Klassendateien gewarnt und können nicht erstellt werden. Es ist ein bekannter Fehler und Sie müssen Folgendes zu Ihren Proguard-Regeln hinzufügen
Viel Glück!
quelle
In meinem Fall habe ich eine meiner Bibliotheken in meinem Android-Projekt aktualisiert.
Ich verwende Reservoir als Cache-Speicherlösung: https://github.com/anupcowkur/Reservoir
Ich ging von:
Zu:
Der Bibliotheksautor muss die Commons-Io-Bibliothek aus dem Repo entfernt haben, damit meine App nicht mehr funktioniert.
Ich musste das Commons-Io manuell einfügen, indem ich es zu gradle hinzufügte:
https://mvnrepository.com/artifact/commons-io/commons-io/2.5
quelle
Ich habe Folgendes geklont: https://github.com/google/play-licensing
Dann habe ich das in mein Projekt importiert.
quelle