¿Estoy tratando de convertir un proyecto IntelliJ al sistema Gradle de Android Studio pero me encuentro con errores con Apache HttpClient? Me falta algo, los errores que obtengo son los siguientes:
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
Mi archivo build.gradle tiene las siguientes dependencias:
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')
}
Parece que muchas personas están teniendo un problema similar, pero ni SO ni Google tienen una solución, por lo que espero que esta pregunta ayude a los futuros buscadores.
si está utilizando el SDK de destino como 23, agregue el siguiente código en su build.gradle
y cambia tu buildscript a
para más información sigue este enlace
fuente
Error:(14, 23) error: package org.apache.http does not exist
Tuve este problema y luego encontré estas páginas: Aquí puede ver que la biblioteca apache está en desuso, pero no se ha eliminado, por lo que debería funcionar. No lo hace.
Ver .
Y aquí puedes ver cómo incluir la biblioteca apache en tu proyecto
Ver .
Resolví el problema agregando lo siguiente a mi archivo build.gradle como se recomienda en el segundo enlace.
Sin embargo, esto solo funciona si está utilizando gradle 1.3.0-beta2 o superior, por lo que tendrá que agregar esto a las dependencias de buildscript si está en una versión inferior:
Espero que esto ayude.
fuente
Agregue esta biblioteca a
build.gradle
fuente
build.gradle
, sino dentro de la carpeta del módulo que está creando (es decir, "aplicación")copia
org.apache.http.legacy.jar
que está en laAndroid/Sdk/platforms/android-23/optional
carpeta aapp/libs
y también agregó esta línea al archivo app.gradle
Pero si está usando más bibliotecas jar, puede usar de esta manera
fuente
Básicamente, todo lo que necesita hacer es agregar:
A tu
build.gradle
archivo.fuente
Me encontré con el mismo problema. La respuesta de Daniel Nugent ayudó un poco (después de encontrar su consejo
HttpResponse
, peroHttpClient
aún faltaba).Entonces, esto es lo que me arregló:
4.5.1.zip
de la sección binariahttpcore-4.4.3
yhttpclient-4.5.1.jar
en laproject/libs
carpetaEspero eso ayude.
fuente
Me encontré con problemas similares, es posible que pueda hacer que funcione con un método similar.
Primero, intente esto con su configuración actual, excluya
httpclient
dehttpmime
:En mi caso, lo arreglé usando los siguientes frascos:
Luego, en build.gradle, excluyendo
httpclient
dehttpmime
:fuente
libs/core.jar
para?Respuesta perfecta de Jinu y Daniel
Agregando a esto resolví el problema usando esto, si su compileSdkVersion es 19 (EN MI CASO)
de lo contrario, si su compileSdkVersion es 23, use
fuente
Esto es lo que hice, y funciona para mí.
Paso 1: agregue esto en build.grade (módulo: aplicación)
Paso 2: sincroniza el proyecto y listo.
fuente
La versión del cliente HTTP Apache que se proporcionaba en el stock de Android era muy, muy antigua .
Si bien puede seguir usando la antigua biblioteca obsoleta a través de la
useLibrary 'org.apache.http.legacy'
solución alternativa (sugerida por @ Jinu y otros), realmente necesita morder la viñeta y actualizar a otra cosa, por ejemplo, el Android nativoHttpUrlConnection
, o si eso no satisface sus necesidades, puede usar la biblioteca OkHttp , que es en lo queHttpUrlConnection
se basa internamente de todos modos.OkHttp en realidad tiene una capa de compatibilidad que usa la misma API que el cliente Apache, aunque no implementan todas las mismas características, por lo que su kilometraje puede variar.
Si bien es posible importar una versión más nueva del cliente Apache (como lo sugiere @MartinPfeffer), es probable que la mayoría de las clases y métodos que estaba utilizando hayan quedado en desuso, y existe un riesgo bastante grande de que la actualización introduzca errores en su código (por ejemplo, encontré algunas conexiones que anteriormente funcionaban desde atrás de un proxy ya no funcionaban), por lo que esta no es una gran solución.
fuente
Después de pasar días sobre el tema, finalmente pude resolverlo. Desafortunadamente lo necesitamos si queremos usar archivos de expansión. La solución ha sido proporcionada por algunas personas aquí, pero para mí las respuestas no incluían algunos detalles menores que podrían haberme ahorrado mucho tiempo. Aquí está la secuencia de eventos para principiantes como yo para ahorrar su valioso tiempo.
Primero importé la carpeta "biblioteca" de D: \ Users \ Imre \ AppData \ Local \ Android \ sdk1 \ extras \ google \ play_licensing al proyecto yendo a Archivo, Nuevo, Módulo de importación y navegando a la carpeta "biblioteca". Si abre el Administrador de SDK y hace clic en "Iniciar Administrador de SDK independiente" en la parte inferior de la pantalla emergente, puede pasar el puntero sobre la carpeta "Extras" en la parte inferior y la pequeña información amarilla le dirá dónde encontrará El paquete que necesita importar.
Una vez hecho esto, vaya a la sección "biblioteca" en el panel izquierdo con "Proyecto" y dentro de ella se abrirá la pestaña "Android". Abra la sección de Java de la biblioteca y abra la clase APKExpansionPolicy. Si tiene errores y la importación org.apache.http.NameValuePair y la importación org.apache.http.client.utils.URLEncodedUtils son de color gris pálido, abra build.gradle (Proyecto: lo que sea) y asegúrese de que en "buildscript" bajo "dependencias" tiene el "classpath 'com.android.tools.build:gradle:1.5.0" incluido. El 1.5.0 puede ser diferente en su caso. Supongo que depende de tu versión de Studio. El mío es 1.5.1. Si el suyo es más nuevo, se le recordará que actualice los números.
Después de eso, vaya a "build.gradle (Módulo: biblioteca) e incluya el" useLibrary 'org.apache.http.legacy' en la sección "android". Sincronizar ahora (esquina superior izquierda / derecha) debe ofrecerse. Hazlo.
Si recibe más mensajes de error (no lo sabría porque lo hice al revés), los archivos de Apache pueden faltar en su proyecto, ya que apache ya no es compatible. Encuéntrelos en C / D: Usuarios / Yourname / AppData / Local / Android / Sdk / plataformas / android-23 / opcional y cópielos / péguelos en su carpeta project / app / libs. Debe tener un archivo opcional.json y un archivo org.apache.http.legacy.jar allí. Puede que sea mejor ir al sitio web de apache y descargar la versión más reciente: http://hc.apache.org/downloads.cgi Descomprímalo donde desee, ábralo, vaya a "lib", copie el httpclient-4.5.1 .jar y reemplace el archivo org.apache.http.legacy.jar con él.
Sincronice y reconstruya / limpie su proyecto y debería estar listo.
Por si acaso, abra su terminal (parte inferior izquierda de Android Studio) y escriba "gradlew clean". Instalará algunas cosas. Una vez hecho, escriba "gradlew assemble". Tardará unos minutos en terminar, pero le dará los errores si tiene alguno, por supuesto. Si no puede escribir nada en la Terminal, inicie el símbolo del sistema (botón de Windows + R), escriba cmd, presione OK, haga clic derecho en el título de la pequeña pantalla emergente negra (C: \ WINDOWS \ system32 \ cmd.exe) , Propiedades, Opciones, en la parte inferior de la ventana, verifique que "Usar consola heredada" esté grueso. Reinicie A.Studio.
¡Buena suerte!
fuente
Tuve que publicar ya que ninguna de las respuestas anteriores funcionó completamente para mí.
Estoy usando Android Studio
Paso 1: descargue el último archivo jar ( http://www-eu.apache.org/dist//httpcomponents/httpclient/binary/httpcomponents-client-4.5.2-bin.zip )
Paso 2: Copie y pegue el archivo .jar en la carpeta libs (crear si aún no existe) en su módulo (puede ser una aplicación o biblioteca)
Paso 3: Haz clic derecho en el frasco y "Agregar como biblioteca". Agregará automáticamente el archivo jar como una dependencia en el archivo gradle de su módulo
Paso 4: ahora su problema se resolverá automáticamente, pero en caso de que esté usando proguard en su aplicación, le dará una advertencia sobre archivos de clase duplicados y no le permitirá compilar. Es un error conocido y debe agregar lo siguiente a sus reglas de protección
¡Buena suerte!
fuente
En mi caso, actualicé una de mis bibliotecas en mi proyecto de Android.
Estoy usando Reservoir como mi solución de almacenamiento en caché: https://github.com/anupcowkur/Reservoir
Yo fui de:
A:
El autor de la biblioteca debe haber eliminado la biblioteca commons-io del repositorio para que mi aplicación ya no funcione.
Tuve que incluir manualmente el commons-io agregando esto en gradle:
https://mvnrepository.com/artifact/commons-io/commons-io/2.5
fuente
Cloné lo siguiente: https://github.com/google/play-licensing
Luego importé eso en mi proyecto.
fuente