J'essaie de convertir un projet IntelliJ au système Gradle d'Android Studio mais je rencontre des erreurs avec Apache HttpClient? Suis-je en train de manquer quelque chose, les erreurs que je reçois sont les suivantes:
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
Mon fichier build.gradle a les dépendances suivantes:
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')
}
Il semble que beaucoup de gens rencontrent un problème similaire, mais ni SO ni Google n'ont de solution, j'espère donc que cette question aidera les futurs chercheurs.
si vous utilisez sdk cible comme 23 ajoutez le code ci-dessous dans votre build.gradle
et changez votre buildscript en
pour plus d'informations suivez ce lien
la source
Error:(14, 23) error: package org.apache.http does not exist
J'ai eu ce problème et j'ai trouvé ces pages: Ici, vous pouvez voir que la bibliothèque Apache est obsolète, mais elle n'est pas supprimée, donc cela devrait fonctionner. Ce n'est pas le cas.
Tu vois .
Et ici, vous pouvez voir comment inclure la bibliothèque Apache à votre projet
Tu vois .
J'ai résolu le problème en ajoutant le suivant à mon fichier build.gradle comme recommandé dans le deuxième lien.
Cependant, cela ne fonctionne que si vous utilisez gradle 1.3.0-beta2 ou supérieur, vous devrez donc l'ajouter aux dépendances de buildscript si vous utilisez une version inférieure:
J'espère que cela t'aides.
la source
Ajoutez cette bibliothèque dans
build.gradle
la source
build.gradle
, mais plutôt dans le dossier du module que vous construisez (c'est-à-dire "app")copie
org.apache.http.legacy.jar
qui est dans leAndroid/Sdk/platforms/android-23/optional
dossier versapp/libs
et a également ajouté cette ligne au fichier app.gradle
Mais si vous utilisez plus de bibliothèques jar, vous pouvez utiliser cette méthode
la source
Fondamentalement, tout ce que vous devez faire est d'ajouter:
Dans votre
build.gradle
dossier.la source
J'ai rencontré le même problème. La réponse de Daniel Nugent a un peu aidé (après avoir suivi ses conseils a
HttpResponse
été trouvé - mais leHttpClient
manquait toujours).Voici donc ce qui l'a corrigé pour moi:
4.5.1.zip
partir de la section binairehttpcore-4.4.3
ethttpclient-4.5.1.jar
dans leproject/libs
dossierJ'espère que ça aide.
la source
J'ai rencontré des problèmes similaires, vous pourriez peut-être le faire fonctionner en utilisant une méthode similaire.
Tout d'abord, essayez ceci avec votre configuration actuelle, excluez
httpclient
dehttpmime
:Dans mon cas, je l'ai corrigé en utilisant les pots suivants:
Ensuite, dans le build.gradle, à l'exclusion
httpclient
dehttpmime
:la source
libs/core.jar
?Réponse parfaite de Jinu et Daniel
Ajoutant à cela, j'ai résolu le problème en utilisant ceci, si votre version compileSdk est 19 (DANS MON CAS)
sinon si votre compileSdkVersion est 23 alors utilisez
la source
C'est ce que j'ai fait et ça marche pour moi.
étape 1: ajoutez ceci dans le build.grade (module: app)
étape 2: synchronisez le projet et terminé.
la source
La version du client HTTP Apache fournie sur le stock Android était très très ancienne .
Bien que vous puissiez continuer à utiliser l'ancienne bibliothèque obsolète via la
useLibrary 'org.apache.http.legacy'
solution de contournement (suggérée par @Jinu et d'autres), vous devez vraiment mordre la balle et passer à autre chose, par exemple Android natifHttpUrlConnection
, ou si cela ne répond pas à vos besoins, vous pouvez utiliser la bibliothèque OkHttp , qui est ce quiHttpUrlConnection
est basé en interne sur de toute façon.OkHttp a en fait une couche de compatibilité qui utilise la même API que le client Apache, bien qu'ils n'implémentent pas toutes les mêmes fonctionnalités, donc votre kilométrage peut varier.
Bien qu'il soit possible d'importer une version plus récente du client Apache (comme suggéré par @MartinPfeffer), il est probable que la plupart des classes et méthodes que vous utilisiez auparavant ont été dépréciées, et il y a un risque assez important que la mise à jour introduise des bogues dans votre code (par exemple, j'ai trouvé que certaines connexions qui fonctionnaient auparavant derrière un proxy ne fonctionnaient plus), ce n'est donc pas une excellente solution.
la source
Après avoir passé des jours sur le sujet, j'ai finalement réussi à le résoudre. Malheureusement, nous en avons besoin si nous voulons utiliser des fichiers d'extension. La solution a été apportée par quelques personnes ici, mais pour moi, les réponses manquaient de quelques détails mineurs qui auraient pu me faire gagner beaucoup de temps. Voici la séquence d'événements pour les novices comme moi pour gagner votre temps précieux.
J'ai d'abord importé le dossier "bibliothèque" de D: \ Users \ Imre \ AppData \ Local \ Android \ sdk1 \ extras \ google \ play_licensing dans le projet en allant dans Fichier, Nouveau, Importer le module et en naviguant vers le dossier "bibliothèque". Si vous ouvrez le SDK Manager et cliquez sur "Launch Standalone SDK Manager" en bas de l'écran contextuel, vous pouvez passer votre pointeur sur le dossier "Extras" en bas et la petite info jaune vous indiquera où vous trouverez le package que vous devez importer.
Une fois cela fait, descendez dans la section "bibliothèque" dans le volet gauche avec "Projet" et à l'intérieur de celui-ci l'onglet "Android" ouvert. Ouvrez la section java de la bibliothèque et ouvrez la classe APKExpansionPolicy. Si vous avez des erreurs et que l'importation org.apache.http.NameValuePair et l'importation org.apache.http.client.utils.URLEncodedUtils sont gris pâle, ouvrez le build.gradle (Projet: n'importe quoi) et assurez-vous que dans "buildscript" sous "dépendances" vous avez le "classpath 'com.android.tools.build:gradle:1.5.0" inclus. Le 1.5.0 peut être différent dans votre cas. Je suppose que cela dépend de votre version Studio. Le mien est 1.5.1. Si le vôtre est plus récent, il vous sera rappelé de mettre à jour les numéros.
Après cela, allez dans "build.gradle (Module: bibliothèque) et incluez" useLibrary "org.apache.http.legacy" dans la section "android". Sync Now (coin supérieur droit / gauche) devrait être proposé. Fais le.
Si vous obtenez d'autres messages d'erreur (je ne le saurais pas parce que je l'ai fait dans l'autre sens), les fichiers Apache peuvent être manquants dans votre projet, car apache n'est plus pris en charge. Trouvez-les dans C / D: Users / Yourname / AppData / Local / Android / Sdk / plates-formes / android-23 / facultatif et copiez / collez-les dans votre dossier project / app / libs. Vous devriez avoir un fichier facultatif.json et un fichier org.apache.http.legacy.jar dedans. Vous feriez mieux d'aller sur le site Web d'Apache et de télécharger la dernière version: http://hc.apache.org/downloads.cgi Décompressez-la où vous voulez, ouvrez-la, allez dans "lib", copiez httpclient-4.5.1 .jar et remplacez le fichier org.apache.http.legacy.jar par celui-ci.
Synchronisez et reconstruisez / nettoyez votre projet et cela devrait être bon.
Au cas où, ouvrez votre terminal (bas L / H d'Android Studio) et tapez "gradlew clean". Il va installer quelques éléments. Une fois cela fait, tapez "gradlew assemble". Cela prendra quelques minutes pour terminer, mais cela vous donnera les erreurs si vous en avez bien sûr. Si vous ne pouvez rien taper dans le terminal, lancez l'invite de commande (bouton Windows + R), tapez cmd, appuyez sur OK, cliquez avec le bouton droit sur le titre du petit écran contextuel noir (C: \ WINDOWS \ system32 \ cmd.exe) , Propriétés, Options, en bas de la fenêtre, vérifiez que "Utiliser la console héritée" est épaissi. Redémarrez A.Studio.
Bonne chance!
la source
J'ai dû poster car aucune des réponses ci-dessus ne fonctionnait complètement pour moi.
J'utilise Android Studio
Étape 1: Téléchargez le dernier fichier jar ( http://www-eu.apache.org/dist//httpcomponents/httpclient/binary/httpcomponents-client-4.5.2-bin.zip )
Étape 2: Copiez collez le fichier .jar dans le dossier libs (créez s'il n'existe pas déjà) dans votre module (peut être une application ou une bibliothèque)
Étape 3: Faites un clic droit sur le pot et "Ajouter comme bibliothèque". Il ajoutera automatiquement le fichier jar en tant que dépendance dans le fichier gradle de votre module
Étape 4: Votre problème sera désormais résolu automatiquement, mais si vous utilisez proguard dans votre application, il vous avertira des fichiers de classe en double et ne vous permettra pas de créer. C'est un bogue connu et vous devez ajouter ce qui suit à vos règles de proguard
Bonne chance!
la source
Dans mon cas, j'ai mis à jour une de mes bibliothèques dans mon projet Android.
J'utilise Reservoir comme solution de stockage de cache: https://github.com/anupcowkur/Reservoir
Je suis passé de:
À:
L'auteur de la bibliothèque doit avoir supprimé la bibliothèque commons-io du référentiel pour que mon application ne fonctionne plus.
J'ai dû inclure manuellement le commons-io en l'ajoutant à gradle:
https://mvnrepository.com/artifact/commons-io/commons-io/2.5
la source
J'ai cloné les éléments suivants: https://github.com/google/play-licensing
Ensuite, j'ai importé cela dans mon projet.
la source