2012-05-19 4 views
19

dostaję zawsze z PROGUARD następujący błąd:błąd ProGuard nie może znaleźć superklasę lub interfejsu 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 

Mój plik proguard.cfg jest:

-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 ve już dodał wszystkie moje biblioteki zewnętrzne, więc dlaczego zawsze otrzymuję te błędy? Czy ktoś może pomóc?

EDIT 21.05.2012: Problem jest, jeśli dodać "Dropbox" słoika i "ActionBarSherlock". Jeśli dodaję tylko "Dropbox", nie mam problemu. Jeśli dodaję tylko "ActionBarSherlock", nie mam problemu. Ale jeśli dodałem oba, otrzymam powyższe błędy.

Odpowiedz

35

Problem występuje, jeśli do projektu dodano słoiki "ActionBarSherlock" i "Dropbox". Aby rozwiązać ten problem, należy dodać poniższy wiersz do pliku PROGUARD-project.txt:

-dontwarn org.apache.** 

Ostrzeżenie będą ignorowane i będzie działać, ponieważ każdy z samych słoików pracują. Więc myślę, że to będzie błąd w ProGuard, jeśli oba zostaną dodane.

+0

to nie działa, a błąd jest następujący: Ostrzeżenie: aa $ a: nie można znaleźć pola z odniesieniem "org.apache.http.HttpEntity wrappedEntity" w klasie programu aa $ a – Kenji

+0

@Kenji: Przepraszamy, nie używam już ActionBarSherlock, więc Nie mogę ci pomóc. – chrisonline

+0

@BinilS: Co masz na myśli mówiąc "API nie zadzwoni za pomocą org.apache"? – chrisonline

8

Ewentualnie trzeba:

-keep class org.apache.http.**

-keep interface org.apache.http.**

To jest zakładając oczywiście PROGUARD narzeka klas Apache. Trzeba przyznać, że nie jestem ekspertem od ProGuarda.

+0

Tak, myślę, że to jest rozwiązanie, ale nie chcę go zachować, ponieważ go nie używam. I wszystkie zewnętrzne słoiki, które dodałem do bibliotekarzy! Dlaczego pojawia się ten błąd? – chrisonline

+0

Możesz nie mieć wyboru. Czy pomoc na stronie przykładowej ProGuard pomaga? http://proguard.sourceforge.net/index.html#manual/examples.html – Kerry

+1

Próbowałem, ale to nie działa. Ten sam błąd ... – chrisonline