使用ProGuard构建会忽略android.app。*类

时间:2012-09-06 03:58:15

标签: android proguard

我第一次使用ProGuard。我在项目的根包中包含了所有活动,片段,列表片段等(我尝试移动它们但没有区别)。我正在使用标准proguard-android.txt加上proguard-project.txt我可以放置任何我想要的东西,这对这些类没什么影响,因为它们只是被忽略了。

它们未列在usage.txtseeds.txtmapping.txtdump.txt中,并且它们不在dex中(尽管图书馆类似乎已被正确处理)。

我为每个被忽略的类尝试了-keep public class <my.project.rootpackage>.MyActivity,还有很多其他事情,最后一个是:

-dontshrink
-dontoptimize
-dontobfuscate

-keep public class * extends android.app.Application
-keep public class * extends android.support.v4.app.FragmentActivity
-keep public class * extends android.support.v4.app.Fragment
-keep public class * extends android.support.v4.app.ListFragment
-keep public class * extends android.preference.PreferenceActivity

我可以在学习时使用更简单的项目,但我不明白为什么它不应该工作,毕竟ProGuard似乎能很好地处理库。当然,在调试模式下构建项目时效果很好。

ProGuard更新到v4.8,Eclipse 3.7.2,ADT和SDK更新,项目目标API 15,没有来自ProGuard的消息。

我错过了什么?我承认我从来没有清楚构建过程。我必须学习Ant吗?

编辑:当它无法正常工作时(即ProGuard完成错误),我经常遇到这种错误:

  

警告:my.project.package.ClassA:找不到引用的类my.project.package.ClassB

请注意,这两个类也可以在同一个包中。

1 个答案:

答案 0 :(得分:0)

因此,似乎忽略的类是由于“自动构建”功能阻止ProGuard完成其工作。如果不加以检查,“导出签名的应用程序包”程序进展顺利,但ProGuard并没有模糊/缩小。但这又引出了另一个问题。

参考文献:Why start using -libraryjars when I never needed it before?

...编辑:实际上只是项目bin中的apk没有缩小。导出的APK很好。真是太棒了。