android - 如何使用 ProGuard 将所有方法保留在一个类中

标签 android proguard

我使用 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/

相关文章:

java - OutOfMemoryError 创建位图

java - okHttp 不会取消执行

android - 拒绝从android中的emailprovider读取的权限

java - 如何将日志记录添加到被 Proguard 剥离的 Android Java 应用程序?

android - jack 似乎并没有自己混淆代码

android - InfiniteViewPager 在 setCurrentItem() 方法上卡住

android - 在操作栏选项卡中添加 Page Curl

android - 启用 proguard 时转换为 dalvik 格式失败,出现错误 1

android - proguardFile getDefaultDexGuardFile ('dexguard-release.pro' ) 不再有效

ant - JavaFx TableView 内容在混淆后消失