如何告诉 ProGuard 保留私有字段而不指定每个字段
Posted
技术标签:
【中文标题】如何告诉 ProGuard 保留私有字段而不指定每个字段【英文标题】:How to tell ProGuard to keep private fields without specifying each field 【发布时间】:2014-06-15 09:53:35 【问题描述】:这是我的课:
package com.tools.app.holiday;
public class Holiday
private String name;
private Calendar dateFrom = Calendar.getInstance();
private Calendar dateTo = Calendar.getInstance();
...
我可以通过将以下内容放入我的 ProGuard 规则文件中来保留这些私有字段:
-keepclassmembers class com.tools.app.holiday.Holiday
private java.lang.String name;
private java.util.Calendar dateFrom;
private java.util.Calendar dateTo;
但我不想单独指定每个字段。我该怎么做?
附:我从Proguard keep classmembers 窃取了大部分内容,因为这个问题与我要问的问题很接近。
【问题讨论】:
【参考方案1】:根据ProGuard documenation,通配符<fields>
匹配任何字段。因此它应该是这样的:
-keepclassmembers class com.tools.app.holiday.Holiday
private <fields>;
如果您想在所有类中保留私有字段,请使用:
-keepclassmembers class *
private <fields>;
【讨论】:
-keepclasseswithmembers class * @com.activeandroid.annotation.Column <fields>;
怎么样以上是关于如何告诉 ProGuard 保留私有字段而不指定每个字段的主要内容,如果未能解决你的问题,请参考以下文章
如何使 ProGuard 保留整个(整个)类(带有字段和方法)而不使用“-keep”