2010-08-26 19 views
5

Qualcuno ha provato a utilizzare una versione più recente di Apache HttpClient su Android? C'è un fastidioso bug nel HttpClient utilizzato da Android e mi chiedevo se avrei incontrato problemi nel tentativo di ridistribuire HttpClient 4.1 con la mia app.Apache HttpClient 4.1 su Android

risposta

2

Ciò non sembra una buona idea, soprattutto se i nomi dei pacchetti e delle classi non sono stati modificati nella versione più recente del client. Molto probabilmente non sarai in grado di prevedere quale classe viene utilizzata (vecchia o nuova).

+0

Se si utilizza il plug-in Maven Shade, è possibile spostarlo tutto in un altro pacchetto e salvarlo utilizzando. –

2

Nel caso in cui qualcuno fosse interessato, ho ricostruito la mia app con Apache HttpClient 4.01 e tutto sembra funzionare correttamente. L'app è cresciuta solo di 100kB.

+0

Puoi darci alcune istruzioni passo passo su come costruire contro HTTPClient 4.x invece della versione built-in? – Ognyan

+0

Il mio è cresciuto di 250kB (Apache HttpClient 4.2.1), ultima versione di httpclientandroidlib da luglio 2012 – Twilite

+0

Ogre_BGR: hai trovato qualche soluzione? Sto cercando di riorganizzare da solo l'uso di HttpClient 4.3.1: http://stackoverflow.com/questions/21134237/how-to-repackage-httpclient-4-3-1-and-remove-dependencies-on- commons-logging – Stuck

0

Stavo eseguendo 4.1 bene fino a quando non ho iniziato a utilizzare ThreadSafeClientConnManager e Scheme che hanno prodotto alcuni errori di runtime.

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 

ho il sospetto del regime di anziani in API Android è utilizzato, che ha un costruttore diverso.

6

Ho creato uno script per convertire una versione HttpClient di riserva in un progetto di libreria Android. I pacchetti vengono rinominati in modo tale da non creare confusione sulle classi utilizzate.

Anche ThreadSafeClientConnManager e Schema funzionano correttamente.

Date un'occhiata: httpclientandroidlib

+0

grazie mille !! – dan

+0

dirkboye: come riconfezionarlo da solo? http://stackoverflow.com/questions/21134237/how-to-repackage-httpclient-4-3-1-and-remove-dependencies-on-commons-logging Oppure puoi aggiornare la lib per usare HttpClient 4.3.1? – Stuck

1

C'è un official Android porto di apache HttpClient si può trovare in maven repository (o cercare "httpclient-Android").

Purtroppo Android è dotato di un fork di apache HttpClient integrato ed è bloccato nella versione 4.0.

Problemi correlati