我是第一次使用 ProGuard。我在项目的根包中拥有我所有的活动、片段、列表片段等(我试图移动它们但没有任何区别)。我正在使用标准proguard-android.txt
加上proguard-project.txt
我可以放置任何我想要的东西,这对这些类没有影响,因为它们只是被忽略了。
它们未列在usage.txt
,或中seeds.txt
,也不在 dex 中(尽管库类似乎得到了正确处理)。mapping.txt
dump.txt
-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 没有消息。
我错过了什么?我承认我从来没有清楚的构建过程。我必须学习蚂蚁吗?
编辑:当它不起作用时(也就是说,ProGuard 以错误结束),我经常收到这种错误:
警告:my.project.package.ClassA:找不到引用的类 my.project.package.ClassB
请注意,这两个类也可以在同一个包中。