2010-08-26 8 views
5

¿Alguien ha intentado utilizar una versión más nueva de Apache HttpClient en Android? Hay un error molesto en el HttpClient utilizado por Android y me preguntaba si tendría problemas para redistribuir HttpClient 4.1 con mi aplicación.Apache HttpClient 4.1 en Android

Respuesta

2

Eso no parece una buena idea, especialmente si los nombres de paquete y clase no se cambiaron en la versión más nueva de Cliente. Lo más probable es que no puedas predecir qué clase se usa (vieja o nueva).

+0

Si usa Maven Shade Plugin, puede moverlo todo a un paquete diferente y guardarlo. –

2

Por si acaso alguien está interesado: he reconstruido mi aplicación con Apache HttpClient 4.01 y todo parece funcionar bien. La aplicación ha crecido solo en 100kB.

+0

¿Puede darnos algunas instrucciones paso a paso de cómo compilar contra HTTPClient 4.x en lugar de la versión incorporada? – Ognyan

+0

La mina ha crecido en 250kB (Apache HttpClient 4.2.1), la última versión de httpclientandroidlib desde julio de 2012 – Twilite

+0

Ogre_BGR: ¿encontró alguna solución? Estoy intentando volver a empaquetar solo para utilizar HttpClient 4.3.1: http://stackoverflow.com/questions/21134237/how-to-repackage-httpclient-4-3-1-and-remove-dependencies-on- commons-logging – Stuck

0

Estaba ejecutando 4.1 correctamente hasta que comencé a usar ThreadSafeClientConnManager y Scheme, que produjo algunos errores de tiempo de ejecución desagradables.

ERROR/dalvikvm(1077): Could not find method org.apache.http.conn.scheme.Scheme.<init>, referenced from method com.example.MyActivity.download 
WARN/dalvikvm(1077): VFY: unable to resolve direct method 3290: Lorg/apache/http/conn/scheme/Scheme;.<init> (Ljava/lang/String;ILorg/apache/http/conn/scheme/SchemeSocketFactory;)V 
WARN/dalvikvm(1077): VFY: rejecting opcode 0x70 at 0x0035 

Sospecho que se utiliza el anterior Esquema en Android API que tiene un constructor diferente.

6

Creé una secuencia de comandos para convertir una versión original de HttpClient en un proyecto de biblioteca de Android. Los paquetes se renombran para que no haya confusión sobre qué clases se usan.

También ThreadSafeClientConnManager y Scheme funcionan bien.

Echale un vistazo: httpclientandroidlib

+0

muchas gracias !! – dan

+0

dirkboye: ¿cómo volver a empaquetarlo solo? http://stackoverflow.com/questions/21134237/how-to-repackage-httpclient-4-3-1-and-remove-dependencies-on-commons-logging ¿O puede actualizar la lib para usar HttpClient 4.3.1? – Stuck

1

Hay un puerto official androide de Apache HttpClient se pueden encontrar en maven repository (o buscar "httpclient-android").

Lamentablemente, Android viene con un tenedor de Apache HttpClient integrado y está atorado en la versión 4.0.

Cuestiones relacionadas