studio org including developer clase android apache httpclient build.gradle android-6.0-marshmallow

org - ¿Cómo agregar Apache HTTP API(heredado) como dependencia en tiempo de compilación para build.grade para Android M?



download android 6.0 marshmallow (10)

Acaba de copiar el archivo: org.apache.http.legacy.jar de la Android/Sdk/platforms/android-23/optional en la carpeta de proyecto app/libs .

Trabajó como encanto para 23.1.1.

Como se mencionó here , Android M no admitirá la API Apache HTTP. Los documentos indican que:

use la clase HttpURLConnection en su lugar.

o

Para continuar usando las API de Apache HTTP, 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 a 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 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


Como las respuestas son un poco viejas, pondré mi solución (lo que funcionó para mí), puede ser útil para otra persona ... Tomé mi solución de la documentación oficial de Apache, sin solución.

1 / en gradle:

dependencies { ... // This is the maintained version from apache. compile group: ''cz.msebera.android'', name: ''httpclient'', version: ''4.4.1.1'' }

2 / en el resto de la aplicación, reemplace org.apache.http por cz.msebera.android.httpclient y todas sus importaciones (dependencias) serán cz.msebera.android.httpclient . solo puede hacer ctrl + shift + R y reemplazarlo en todo el proyecto.


En su archivo build.gradle, agregue useLibrary ''org.apache.http.legacy'' según Android 6.0 Changes > Apache HTTP Client Removal notes.

android { ... useLibrary ''org.apache.http.legacy'' ... }

Para evitar errores de enlace faltantes, agregue dependencias

dependencies { provided ''org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2'' }

usando ''siempre que'' la dependencia no se incluirá en el apk


FWIW la eliminación de la biblioteca Apache fue anunciada 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 eso debería incluirse en la lista de bibliotecas en desuso a menos que los encargados de la actualización actualicen su código.

<rant> No puedo decirte cuántos argumentos técnicos he tenido con personas que insistieron en seguir con el cliente Apache HTTP. Hay algunas aplicaciones importantes que se van a romper porque la administración de mis empleadores anteriores que no se nombrarán no escuchó a sus principales ingenieros o sabía de lo que estaban hablando cuando ignoraron la advertencia ... pero, agua debajo el puente.

Yo gano.

</rant>



Otra alternativa es simplemente agregar la dependencia de jbundle. Esto es más amigable con Android Studio ya que Android Studio no da el mensaje "no se puede resolver el símbolo ..."

dependencies { compile ''org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2'' }


Para API 23:

Nivel superior build.gradle - /build.gradle

buildscript { ... dependencies { classpath ''com.android.tools.build:gradle:1.3.1'' } } ...

Módulo específico build.gradle - /app/build.gradle

android { compileSdkVersion 23 buildToolsVersion "23.0.0" useLibrary ''org.apache.http.legacy'' ... }

Documentos oficiales (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 de Android Gradle: http://tools.android.com/tech-docs/new-build-system


Para resolver los problemas, asegúrese de estar utilizando la versión de herramientas de compilación "23.0.0 rc2" con las siguientes herramientas de dependencia gradle de compilación:

classpath ''com.android.tools.build:gradle:1.3.0-beta2''


Resolví este problema así:

1.) Establecer classpath en el archivo de compilación de nivel superior como se menciona en GUG:

buildscript { repositories { jcenter() } dependencies { classpath ''com.android.tools.build:gradle:1.3.0-beta2'' } allprojects { repositories { jcenter() } } }

2.) En el archivo de compilación del módulo específico:

android { useLibrary ''org.apache.http.legacy'' compileSdkVersion ''android-MNC'' buildToolsVersion ''23.0.0 rc3'' }


debería ayudar:

android { ... useLibrary ''org.apache.http.legacy'' ... }

Para evitar errores de enlace faltantes, agregue dependencias

dependencies { provided ''org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2'' }

o

dependencies { compileOnly ''org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2'' }

porque

Warning: Configuration ''provided'' is obsolete and has been replaced with ''compileOnly''.