2012-05-19 15 views
19

ricevo sempre con ProGuard seguente errore:errore ProGuard non riesce a trovare superclasse o interfaccia org.apache.http.entity

[2012-05-19 17:50:13 - xxx] Warning: there were 13 unresolved references to  program class members. 
[2012-05-19 17:50:13 - xxx]   Your input classes appear to be  inconsistent. 
[2012-05-19 17:50:13 - xxx]   You may need to recompile them and try again. 
[2012-05-19 17:50:13 - xxx]   Alternatively, you may have to specify the option 
[2012-05-19 17:50:13 - xxx]   '-dontskipnonpubliclibraryclassmembers'. 
[2012-05-19 17:50:13 - xxx] Error: Please correct the above warnings first. 
[2012-05-19 17:55:40 - xxx] Proguard returned with error code 1. See console 
[2012-05-19 17:55:40 - xxx] Note: there were 239 duplicate class definitions. 
[2012-05-19 17:55:40 - xxx] Warning: org.apache.http.entity.mime.FormBodyPart: can't find superclass or interface org.apache.james.mime4j.message.BodyPart 
[2012-05-19 17:55:40 - xxx] Warning: org.apache.http.entity.mime.HttpMultipart: can't find superclass or interface org.apache.james.mime4j.message.Multipart 
[2012-05-19 17:55:40 - xxx] Warning: org.apache.http.entity.mime.MinimalField: can't find superclass or interface org.apache.james.mime4j.parser.Field 

Il mio file proguard.cfg è:

-keep class android.support.v4.app.** { *; } 
-keep interface android.support.v4.app.** { *; } 
-keep class com.actionbarsherlock.** { *; } 
-keep interface com.actionbarsherlock.** { *; } 

-keepattributes *Annotation* 
-keepattributes SourceFile, LineNumberTable 

-libraryjars /libs/crittercism_v2_0_1.jar 
-libraryjars /libs/dropbox-android-sdk-1.2.2.jar 
-libraryjars /libs/FlurryAgent.jar 
-libraryjars /libs/httpmime-4.0.3.jar 
-libraryjars /libs/json_simple-1.1.jar 

I' Ho già aggiunto tutte le mie librerie esterne, quindi perché ottengo sempre questi errori? Qualcuno può aiutare?

EDIT 21.05.2012: Il problema è se si aggiunge "jar Dropbox" E "ActionBarSherlock". Se aggiungo solo "Dropbox", non ho alcun problema. Se aggiungo solo "ActionBarSherlock", non ho alcun problema. Ma se aggiungessi entrambi, otterrei gli errori sopra.

risposta

35

Il problema esiste se sono stati aggiunti i vasi "ActionBarSherlock" e "DropBox" al progetto. Per risolvere il problema, aggiungere la riga seguente al file Proguard-project.txt:

-dontwarn org.apache.** 

L'avvertimento sarà ignorato e che funzionerà perché ognuno dei soli vasi stanno lavorando. Quindi penso che questo sarà l'errore in ProGuard, se vengono aggiunti entrambi.

+0

non funziona e l'errore è: Avviso: aa $ a: impossibile trovare il campo referenziato 'org.apache.http.HttpEntity wrappedEntity' nella classe di programma aa $ a – Kenji

+0

@Kenji: Scusa se non uso più ActionBarSherlock, quindi Non posso aiutarti. – chrisonline

+0

@BinilS: cosa intendi con "API non chiamerà utilizzando org.apache"? – chrisonline

8

Forse è necessario:

-keep class org.apache.http.**

-keep interface org.apache.http.**

che sta assumendo, naturalmente ProGuard si lamenta delle classi apache. Devo ammettere che, in qualche modo, non sono esperto di ProGuard.

+0

Sì, penso che questa sia una soluzione, ma non voglio tenerla perché non la uso. E tutti i barattoli esterni che ho aggiunto ai libraryjars! Allora, perché sto ricevendo questo errore? – chrisonline

+0

Potrebbe non esserci una scelta. È utile consultare la pagina di esempio di ProGuard? http://proguard.sourceforge.net/index.html#manual/examples.html – Kerry

+1

L'ho provato, ma non funziona. Lo stesso errore ... – chrisonline

Problemi correlati