为什么ProGuard突然无法编译我的应用程序?

时间:2013-06-25 04:16:29

标签: android proguard

自首次发布以来,我一直在使用Android Studio而没有任何ProGuard问题。突然间,它已经停止了工作。据我所知,任何干扰Proguard的文件都没有改变。例如,我的ProGuard配置文件保持不变,ActionBarSherlock(其中一个模块现在遇到错误)自上次成功构建以来没有以任何方式更改。

使用-dontskipnonpubliclibraryclassmembers建议的错误日志但不能解决问题。使用包含的默认配置而不是我自己的配置运行ProGuard仍会导致相同的错误。

从我可以做到的,当Android Studio构建我的应用程序时,模块现在正从应用程序中删除。我不确定它是不是将相应的标志传递给ProGuard,或者Proguard是否自行移除它们。

一些相关日志:

ProGuard: [Meditation Assistant] Warning: com.actionbarsherlock.widget.SuggestionsAdapter: can't find referenced field 'android.content.Context mContext' in class com.actionbarsherlock.widget.SuggestionsAdapter
ProGuard: [Meditation Assistant] Warning: com.actionbarsherlock.widget.SuggestionsAdapter: can't find referenced method 'android.database.Cursor getCursor()' in class com.actionbarsherlock.widget.SuggestionsAdapter
ProGuard: [Meditation Assistant] Warning: com.actionbarsherlock.widget.SuggestionsAdapter: can't find referenced field 'android.database.Cursor mCursor' in class com.actionbarsherlock.widget.SuggestionsAdapter
--snip--
ProGuard: [Meditation Assistant]       You should check if you need to specify additional program jars.
ProGuard: [Meditation Assistant] Warning: there were 10 unresolved references to classes or interfaces.
ProGuard: [Meditation Assistant]          You may need to specify additional library jars (using '-libraryjars').
ProGuard: [Meditation Assistant] Warning: there were 191 unresolved references to program class members.

2 个答案:

答案 0 :(得分:1)

消息

Warning: there were 10 unresolved references to classes or interfaces.

表明ProGuard找不到所需的某些类。这些类列在ProGuard的早期控制台输出中。您应该检查所有必需的jar是否在目录'libs'中。在这种情况下,android-support-v4.jar可能会丢失。

答案 1 :(得分:0)

我解决了将以下行添加到proguard-project.txt:

-libraryjars libs/android-support-v4.jar

如果使用Eclipse,请不要忘记在导出APK之前清理项目。