studio org nougat including clase java android android-gradle android-6.0-marshmallow

java - org - including apache http client on android studio



¿Cómo usar el cliente HTTP Apache heredado en Android Marshmallow? (12)

¿Cómo usar el cliente HTTP Apache heredado en Android Marshmallow?

Para continuar usando las clases Apache HTTP para API 23+:

En primer lugar, asegúrese de agregar la dependencia de gradle en build.gradle f

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

Luego agregue la referencia dentro de build.gradle de su proyecto:

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

Fondo

En Android Marshmallow, Google ha eliminado por completo el soporte del cliente Apache HTTP (enlace here ) porque no tiene un buen rendimiento en comparación con las alternativas.

Esta también podría ser la causa de que muchas aplicaciones se bloqueen en Android Marshmallow.

El problema

Google le permite seguir utilizando esta API, pero no como una integrada, agregando esta línea al archivo gradle:

useLibrary ''org.apache.http.legacy''

Entonces, esto es lo que hice:

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

Y:

android { compileSdkVersion ''android-MNC'' buildToolsVersion "23.0.0 rc3" useLibrary ''org.apache.http.legacy'' defaultConfig { applicationId "com.example.user.androidmtest" minSdkVersion ''MNC'' targetSdkVersion ''MNC'' versionCode 1 versionName "1.0" }

Cuando lo probé, se compiló bien (no se muestran errores, y pude ejecutar la aplicación de prueba de concepto, ya que no tiene ningún código especial), pero cuando intenté usar algunas de las clases, sé que son parte de la antigua API (como la clase "HttpClient"), veo que no me permite hacerlo.

Sé que no se recomienda usar esta solución, pero debemos tener la aplicación lista para funcionar allí al menos temporalmente, hasta que trabajemos al 100% en todas las cosas que deberían cambiar para Android Marshmallow, y no queremos sorpresas en el forma de accidentes

Aquí hay una captura de pantalla:

La pregunta

¿Por qué ocurre? ¿Lo usé correctamente?

EDITAR: informó sobre este problema aquí:

https://code.google.com/p/android/issues/detail?id=181474


Android Studio se quejaba de que las clases org.apache.http como

org.apache.http.NameValuePair org.apache.http.client.utils.URLEncodedUtils

faltaban

Entonces agregué org.apache.http.legacy.jar que está en la Android/Sdk/platforms/android-23/optional a app/libs

También agregué esta línea a mi archivo app.gradle

compile files(''libs/org.apache.http.legacy.jar'')

Pero si está usando más bibliotecas, puede usar de esta manera

compile fileTree(dir: ''libs'', include: [''*.jar''])

Esto resolvió todos mis errores causados ​​porque Google eliminó la compatibilidad con el cliente HTTP Apache.


Biblioteca de Apache heredada ubicada en

[ANDROID_SDK]/platforms/android-23/optional/org.apache.http.legacy.jar

Para que pueda copiarlo dentro de las bibliotecas de su proyecto o simplemente usar

compile files("${android.getSdkDirectory().getAbsolutePath()}" + File.separator + "platforms" + File.separator + "android-23" + File.separator + "optional" + File.separator + "org.apache.http.legacy.jar")

en tu /app/build.gradle


Después de muchas horas frustrantes, funcionó lo siguiente:

1. Localice el frasco de apache. Debería residir en algún lugar como:

C:/Users/<yourname>/AppData/Local/Android/sdk/platforms/android-23/optional

2. Copie org.apache.http.legacy.jar a su carpeta libs.

Haga clic derecho en libs -> pegar, o use su explorador de archivos para navegar a la carpeta libs de su proyecto y pegar.

Si no tiene una carpeta libs, como yo, cree un nuevo proyecto e importe todos los archivos relevantes en sus respectivos lugares.

3. Haga clic en ok

4. Paso más importante: haga clic derecho en la carpeta apache y seleccione Add As Library . mira esto

Espero que esto ayude a alguien a seguir adelante con su vida.


Habilite esto en sdk / plataformas / android-23 / optional / optional.json

[ { "name": "org.apache.http.legacy", "jar": "org.apache.http.legacy.jar", "manifest": false } ]


La respuesta anterior solo ayuda a ejecutar las compilaciones de depuración y libera compilaciones que utilizan gradle.

Inserte esto dentro de la etiqueta de la aplicación en el archivo de manifiesto, en todas las instancias de proyecto que usan las clases de apache heredadas:

<uses-library android:name="org.apache.http.legacy" android:required="false" />

Esto ayuda a aquellos que todavía usan Eclipse y scripts de hormiga durante la compilación.


Primero tienes que verificar eso en tu carpeta libs

Then add into your gradle file like this android { compileSdkVersion 23 buildToolsVersion ''23.0.2'' defaultConfig { applicationId "info.tranetech.laundry" minSdkVersion 15 targetSdkVersion 23 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile(''proguard-android.txt''), ''proguard-rules.pro'' } } } android { useLibrary ''org.apache.http.legacy'' } dependencies { compile fileTree(dir: ''libs'', include: [''*.jar'']) compile ''com.android.support:appcompat-v7:23.0.1 compile ''com.android.support:design:23.0.1 testCompile ''junit:junit:4.12'' compile files(''libs/android-async-http-1.4.4.jar'') compile ''com.google.android.gms:play-services:8.4.0'' }


Sé que esta es una razón tonta, pero en la lista pruébalo ...

Experimenté este problema recientemente, y es causado por la restricción de longitud de ruta, creo que tiene un máximo de 256 caracteres.

Reubique su proyecto y la construcción tendrá éxito. Espero que esto funcione para usted.


Solución perfecta aquí ejecutando una simple verificación de ruta de archivo. mediante la ejecución

android { compileSdkVersion ''android-MNC'' buildToolsVersion "23.0.0 rc3" useLibrary ''org.apache.http.legacy'' defaultConfig { applicationId "com.example.user.androidmtest" minSdkVersion ''MNC'' targetSdkVersion ''MNC'' versionCode 1 versionName "1.0" } getBootClasspath().each{File file -> println file.absolutePath } } }

Obtendrás algo como a continuación

/Users/"yourname"/Development/android-sdk-macosx/platforms/android-MNC/android.jar /Users/"yourname"/Development/android-sdk-macosx/platforms/android-MNC/optional/org.apache .http.legacy.jar

Ahí lo tienes, el frasco está allí. Por alguna razón, no se agregó al proyecto. pero siempre puedes agregarlo manualmente, supongo.


Una forma simple de resolver este problema es C: / Users / username / AppData / Local / Android / sdk / plataformas. Aquí elimine su android-23 y desde el administrador de SDK actualice su API 23 nuevamente. Resolverá tu problema.


retirar

useLibrary ''org.apache.http.legacy''

desde build.gradle y también agregué esta línea a mi archivo app.gradle

compile files(''libs/org.apache.http.legacy.jar'')

Pero si está usando más bibliotecas, puede usar de esta manera

compile fileTree(dir: ''libs'', include: [''*.jar''])

La respuesta de CoPLaS solucionó mis problemas.


useLibrary ''org.apache.http.legacy'' no funcionó para mí hasta que actualicé la versión de las herramientas de Gradle en mi archivo build.gradle principal de mi proyecto de Android Studio, de la siguiente manera:

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