如何使用ProGuard将所有方法保存在类中

时间:2011-04-08 08:31:39

标签: android proguard

我使用ProGuard优化我的Android应用程序。但是对于Android检测测试,我需要一些(但不是全部)类来保留所有成员。我尝试了各种方法,最后一个是:

-keepclassmembers public class com.mycompany.myclass {
    *;
}

但令人惊讶的是我仍然得到了

java.lang.NoSuchMethodError: com.mycompany.myclass.<init>

这里痛苦的部分是有两个构造函数,一个有很多参数。

有没有人知道正确的语法来保持类完全不变并且不受ProGuard的影响?

2 个答案:

答案 0 :(得分:19)

嗯,这是忏悔时间。问题是僵尸。 -keepclassmembers是正确的。出现问题是因为团队伙伴破坏了代码而构造函数确实不存在。

请注意,如果有一个更改,整个类已被优化,那么您应该使用-keep作为kharles建议,但需要{*;}以确保所有方法都保留在原位。

请注意,{*;}仅用于测试。对于生产,应该使用更精细的方法。

我对任何遇到同样问题的人都提出质疑。

答案 1 :(得分:0)

-keep public class com.mycompany.myclass

(使用keep,而不是{*;})

相关问题