Ошибка ProGuard не может найти суперкласс или интерфейс org.apache.http.entity

Я всегда получаю следующую ошибку ProGuard:

[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

Мой файл 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

Я уже добавил все свои внешние библиотеки, так почему я всегда получаю эти ошибки? Кто-нибудь может помочь?

EDIT 21.05.2012: Проблема в том, что вы добавите банку "Dropbox" И "ActionBarSherlock". Если я добавлю только "Dropbox", у меня не будет проблем. Если я добавлю только "ActionBarSherlock", у меня не будет проблем. Но если бы я добавил оба, я бы получил ошибки выше.


person chrisonline    schedule 19.05.2012    source источник


Ответы (2)


Проблема существует, если вы добавили в свой проект банки «ActionBarSherlock» и «DropBox». Чтобы решить эту проблему, добавьте следующую строку в файл proguard-project.txt:

-dontwarn org.apache.**

Предупреждение будет проигнорировано, и оно будет работать, потому что каждый из банок работает сам по себе. Так что я думаю, что это будет ошибка в ProGuard, если оба будут добавлены.

person chrisonline    schedule 21.05.2012
comment
это не работает, и ошибка: Предупреждение: a.a$a: не удается найти ссылочное поле «org.apache.http.HttpEntitywrappedEntity» в классе программы a.a$a - person Mahdi; 08.03.2016
comment
@Kenji: Извините, я больше не использую ActionBarSherlock, поэтому не могу вам помочь. - person chrisonline; 10.03.2016
comment
@BinilS: Что вы имеете в виду, говоря, что API не будет вызываться с помощью org.apache? - person chrisonline; 10.03.2016

Возможно, вам нужно:

-сохранить класс org.apache.http.**

-сохранить интерфейс org.apache.http.**

Это предполагает, конечно, что ProGuard жалуется на классы apache. По общему признанию, я несколько догадываюсь, поскольку я не эксперт по ProGuard.

person D-Dᴙum    schedule 19.05.2012
comment
Да, я думаю, что это решение, но я не хочу его оставлять, потому что я им не пользуюсь. И все внешние банки, которые я добавил в библиотеку! Так почему я получаю эту ошибку? - person chrisonline; 19.05.2012
comment
У вас может не быть выбора. Помогает ли просмотр примера страницы ProGuard? proguard.sourceforge.net/index.html#manual/examples.html - person D-Dᴙum; 19.05.2012
comment
Это не решает проблему — используйте @chrisonline выше. - person Andrew Alcock; 08.05.2014
comment
Мой ответ действительно может быть неправильным, но отключение предупреждения тоже не очень хорошая идея, вы просто скрываете проблему, я считаю. Требуется дальнейшее исследование проблемы, чтобы понять ее. - person D-Dᴙum; 05.01.2016