Comme mentionné ici , Android M ne prend pas en charge l'API HTTP Apache. La documentation déclare:
utilisez plutôt la classe HttpURLConnection.
ou
Pour continuer à utiliser les API HTTP Apache, vous devez d'abord déclarer la dépendance de compilation suivante dans votre fichier build.gradle:
android {useLibrary 'org.apache.http.legacy'}
J'ai converti une grande partie de l'utilisation de HttpClient dans mon projet en HttpURLConnection, cependant, je dois toujours utiliser HttpClient dans quelques domaines. Par conséquent, j'essaie de déclarer 'org.apache.http.legacy' comme dépendance au moment de la compilation mais j'obtiens une erreur dans build.gradle:
Méthode Gradle DSL introuvable: 'useLibrary ()'
Ma question est la suivante: comment déclarer 'org.apache.http.legacy' comme dépendance à la compilation dans mon projet?
Toute aide est très appréciée. Merci
la source
1.3.0-rc2
. Vous pouvez également envisager d'utiliser la propre édition compatible Android d'Apache de HttpClient .1.0.0
a lauseLibrary
chose. Il est possible qu'elle se soit glissée avant la 1.3.x, vous pouvez donc essayer1.2.3
(AFAIK, la dernière version de production) et voir ce qui se passe.1.3.0-rc2
(ou quelque chose de plus récent, s'il y en a un).Réponses:
Pour l'API 23:
Build.gradle de niveau supérieur - /build.gradle
Build.gradle spécifique au module - /app/build.gradle
Documents officiels (pour un aperçu cependant): http://developer.android.com/about/versions/marshmallow/android-6.0-changes.html#behavior-apache-http-client
Dernier changelog du plugin Android Gradle: http://tools.android.com/tech-docs/new-build-system
la source
useLibrary
doit se trouver dans le fichier de construction spécifique à votre application.packagingOptions {}
bloc à l'intérieur duandroid
bloc, à l'intérieur de ce bloc, ajouterexclude 'META-INF/LICENSE'
... (chaque ligne par fichier en double signalé)Une autre alternative consiste simplement à ajouter une dépendance jbundle. Ceci est plus convivial pour Android Studio car Android Studio ne donne pas le message "Impossible de résoudre le symbole ..."
la source
Remarque pour Android 9 (Pie).
De plus,
useLibrary 'org.apache.http.legacy'
vous devez ajouter dans AndroidManifest.xml:Source: https://developer.android.com/about/versions/pie/android-9.0-changes-28
la source
Dans votre fichier build.gradle, ajoutez useLibrary 'org.apache.http.legacy' selon
Android 6.0 Changes
>Apache HTTP Client Removal
notes.Pour éviter les erreurs de lien manquantes, ajoutez aux dépendances
en utilisant 'fourni', la dépendance ne sera pas incluse dans l'apk
la source
Fichier juste copié:
org.apache.http.legacy.jar
duAndroid/Sdk/platforms/android-23/optional
dossier au dossier du projetapp/libs
.A fonctionné comme un charme pour 23.1.1.
la source
J'ai résolu ce problème comme suit:
1.) Définissez le chemin de classe dans le fichier de construction de niveau supérieur comme indiqué par GUG:
2.) Dans le fichier de construction d'un module spécifique:
la source
Comme les réponses sont un peu anciennes, je vais mettre ma solution (ce qui a fonctionné pour moi), cela peut être utile pour quelqu'un d'autre ... j'ai pris ma solution de la documentation officielle d'Apache, pas de contournement.
1 / en gradle:
2 / dans le reste de l'application remplacez le
org.apache.http
parcz.msebera.android.httpclient
et toutes vos importations (dépendances) seront corrigées. vous pouvez simplement faire ctrl + shift + R et le remplacer dans tout le projet.la source
cela devrait aider:
Pour éviter les erreurs de lien manquantes, ajoutez aux dépendances
ou
car
la source
FWIW, la suppression de la bibliothèque Apache a été annoncée il y a quelque temps. Notre bon ami Jesse Wilson nous a donné un indice en 2011: http://android-developers.blogspot.com/2011/09/androids-http-clients.html
Google a cessé de travailler sur ApacheHTTPClient il y a quelque temps, donc toute bibliothèque qui en dépend encore doit être mise dans la liste des bibliothèques obsolètes à moins que les responsables ne mettent à jour leur code.
<rant>
Je ne peux pas vous dire combien d'arguments techniques j'ai eu avec des personnes qui ont insisté pour rester avec le client HTTP Apache. Il y a quelques applications majeures qui vont s'arrêter parce que la direction de mes anciens employeurs qui ne doivent pas être nommés n'a pas écouté leurs meilleurs ingénieurs ou ne savait pas de quoi ils parlaient quand ils ont ignoré l'avertissement ... mais, l'eau sous le pont.Je gagne.
</rant>
la source
Pour résoudre les problèmes, assurez-vous que vous utilisez la version des outils de génération "23.0.0 rc2" avec les outils suivants pour créer une dépendance gradle:
la source