我第一次使用ProGuard。我在项目的根包中包含了所有活动,片段,列表片段等(我尝试移动它们但没有区别)。我正在使用标准proguard-android.txt
加上proguard-project.txt
我可以放置任何我想要的东西,这对这些类没什么影响,因为它们只是被忽略了。
它们未列在usage.txt
,seeds.txt
,mapping.txt
或dump.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
请注意,这两个类也可以在同一个包中。
答案 0 :(得分:0)
因此,似乎忽略的类是由于“自动构建”功能阻止ProGuard完成其工作。如果不加以检查,“导出签名的应用程序包”程序进展顺利,但ProGuard并没有模糊/缩小。但这又引出了另一个问题。
参考文献:Why start using -libraryjars when I never needed it before?
...编辑:实际上只是项目bin
中的apk没有缩小。导出的APK很好。真是太棒了。