23

我总是遇到 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

我已经添加了所有的外部库,为什么总是出现这些错误?有人可以帮忙吗?

编辑 21.05.2012: 问题是如果你添加“Dropbox”jar 和“ActionBarSherlock”。如果我只添加“Dropbox”,我没有问题。如果我只添加“ActionBarSherlock”,我没有问题。但如果我同时添加两者,我会得到上面的错误。

4

2 回答 2

39

如果您在项目中添加了“ActionBarSherlock”和“DropBox”罐子,问题就存在了。要解决此问题,请将以下行添加到您的 proguard-project.txt 文件中:

-dontwarn org.apache.**

警告将被忽略,它会起作用,因为每个罐子都在工作。所以我认为,如果两者都添加,这将是 ProGuard 中的错误。

于 2012-05-21T08:10:03.443 回答
10

可能你需要:

-保留类 org.apache.http.**

-保持接口 org.apache.http.**

这当然是假设 ProGuard 抱怨 apache 类。诚然,我有些猜测,因为我不是 ProGuard 方面的专家。

于 2012-05-19T16:15:20.807 回答