Como se menciona aquí , Android M no admitirá la API HTTP de Apache. Los documentos dicen:
use la clase HttpURLConnection en su lugar.
o
Para continuar usando las API HTTP de Apache, primero debe declarar la siguiente dependencia en tiempo de compilación en su archivo build.gradle:
android {useLibrary 'org.apache.http.legacy'}
He convertido gran parte del uso de HttpClient de mi proyecto en HttpURLConnection, sin embargo, todavía necesito usar HttpClient en algunas áreas. Por lo tanto, estoy tratando de declarar 'org.apache.http.legacy' como una dependencia en tiempo de compilación, pero obtengo un error en build.gradle:
Método DSL de Gradle no encontrado: 'useLibrary ()'
Mi pregunta es: ¿cómo declaro 'org.apache.http.legacy' como una dependencia en tiempo de compilación en mi proyecto?
Cualquier ayuda es muy apreciada. Gracias
fuente
1.3.0-rc2
. También podría considerar usar la propia edición de HttpClient compatible con Android de Apache .1.0.0
tiene lauseLibrary
cosa. Es posible que haya aparecido antes de 1.3.x, por lo que podría intentarlo1.2.3
(AFAIK, la última versión de producción) y ver qué sucede.1.3.0-rc2
(o algo más nuevo, si lo hay).Respuestas:
Para API 23:
Build.gradle de nivel superior - /build.gradle
Build.gradle específico del módulo - /app/build.gradle
Documentos oficiales (aunque para una vista previa): http://developer.android.com/about/versions/marshmallow/android-6.0-changes.html#behavior-apache-http-client
Último registro de cambios del complemento gradle de Android: http://tools.android.com/tech-docs/new-build-system
fuente
useLibrary
debe estar en el archivo de compilación específico de su aplicación.packagingOptions {}
bloque dentro delandroid
bloque, dentro de este bloque, agregarexclude 'META-INF/LICENSE'
... (cada línea por archivo duplicado informado)Otra alternativa es simplemente agregar la dependencia jbundle. Esto es más compatible con Android Studio, ya que Android Studio no muestra el mensaje "no se puede resolver el símbolo ..."
fuente
Nota para Android 9 (Pie).
Además
useLibrary 'org.apache.http.legacy'
, debe agregar AndroidManifest.xml:Fuente: https://developer.android.com/about/versions/pie/android-9.0-changes-28
fuente
En su archivo build.gradle agregue useLibrary 'org.apache.http.legacy' según
Android 6.0 Changes
>Apache HTTP Client Removal
notas.Para evitar errores de enlaces perdidos, agregue a las dependencias
usando 'proporcionado' la dependencia no se incluirá en el apk
fuente
Archivo recién copiado:
org.apache.http.legacy.jar
de laAndroid/Sdk/platforms/android-23/optional
carpeta a la carpeta del proyectoapp/libs
.Funcionó como un encanto para 23.1.1.
fuente
Resolví este problema así:
1.) Establezca classpath en el archivo de compilación de nivel superior como mencionó GUG:
2.) En el archivo de compilación del módulo específico:
fuente
Como las respuestas son un poco antiguas, pondré mi solución (lo que funcionó para mí), puede ser útil para alguien más ... Tomé mi solución de la documentación oficial de Apache, sin solución .
1 / en gradle:
2 / en el resto de la aplicación, reemplace
org.apache.http
porcz.msebera.android.httpclient
y todas sus importaciones (dependencias) serán corregidas. puede simplemente hacer ctrl + shift + R y reemplazarlo en todo el proyecto.fuente
debería ayudar:
Para evitar errores de enlaces perdidos, agregue a las dependencias
o
porque
fuente
FWIW, la eliminación de la biblioteca Apache se anunció hace un tiempo. Nuestro buen amigo Jesse Wilson nos dio una pista en 2011: http://android-developers.blogspot.com/2011/09/androids-http-clients.html
Google dejó de trabajar en ApacheHTTPClient hace un tiempo, por lo que cualquier biblioteca que todavía dependa de ella debe incluirse en la lista de bibliotecas obsoletas a menos que los encargados del mantenimiento actualicen su código.
<rant>
No puedo decirte cuántos argumentos técnicos he tenido con personas que insistieron en seguir con el cliente HTTP Apache. Hay algunas aplicaciones importantes que van a fallar porque la gerencia de mis empleadores anteriores no nombrados no escuchó a sus mejores ingenieros o sabía de lo que estaban hablando cuando ignoraron la advertencia ... pero, agua debajo el puente.Yo gano.
</rant>
fuente
Para resolver los problemas, asegúrese de utilizar las herramientas de compilación de la versión "23.0.0 rc2" con las siguientes herramientas para compilar la dependencia de gradle:
fuente