我使用 ProGuard 来优化我的 Android 应用程序。但是对于 Android 仪器测试,我需要一些(但不是全部)类来保留所有成员。我尝试了各种方法,最后一种是:
-keepclassmembers public class com.mycompany.myclass {
*;
}
但令人惊讶的是我仍然得到
java.lang.NoSuchMethodError: com.mycompany.myclass.<init>
这里最痛苦的是有两个构造函数,一个有很多参数。
有没有人知道正确的语法来保持一个类完全不变并且不受 ProGuard 的影响?
最佳答案
嗯,现在是忏悔时间。问题是胡说八道。 -keepclassmembers
是正确的。出现问题是因为队友破了代码,构造函数确实不在。
请注意,如果整个类被优化掉了,那么你应该按照 kharles 的建议使用 -keep
但需要 {*;}
来确保所有方法都保持原样。
请注意,{*;}
仅用于测试。对于生产,应该使用更细粒度的方法。
我把这个问题留给任何有同样问题的人。
关于android - 如何使用 ProGuard 将所有方法保留在一个类中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5592511/