我是使用 Proguard 的新手(这似乎非常有用!)。我希望使用起点(例如公共接口)创建一个最小的 JAR(没有任何混淆),并希望 proguard 能够传递地获取依赖类。然而,依赖类似乎缺少私有成员,它的公共 getter/setter 和注释只有构造函数和 toString 方法可用。具体来说,我的 SpecialService 接口指的是 SpecialObject(可能还有许多其他接口)。我想知道是否可以仅将 SpecialService 作为一个保留类提及,并且应将其所有相关(非库)类(具有所有属性 - 没有混淆或优化)拉到输出 jar 中。
<options>
<option>-keepattributes</option>
<option>-keep @javax.ws.rs.Path public class com.kilo.SpecialService { private public protected *;}</option>
</options>
我已经尝试了所有配置,但它似乎不起作用。
特殊服务.java:
@GET
@Path("someComplexObjectsWithIntInputs")
List<SpecialObject> getSomeComplexObjectsWithIntInputs(
@QueryParam("ids") List<Integer> ids);
特殊对象.java
public class SpecialObject {
private String name;
private Integer id;
private Date date;
public SpecialObject() {
}
public SpecialObject(String name, Integer id, Date date) {
this.name = name;
this.id = id;
this.date = date;
}
public String getName() {
return name;
}
public Integer getId() {
return id;
}
public Date getDate() {
return date;
}
public String getFoo() {
return "foo";
}
public void setName(String name) {
this.name = name;
}
public void setId(Integer id) {
this.id = id;
}
public void setDate(Date date) {
this.date = date;
}
@Override
public String toString() {
return "SpecialObject [name=" + name + ", id=" + id + ", date=" + date
+ "]";
}
输出 SpecialObject.java:
/* */ public class SpecialObject
/* */ {
/* */ public String toString()
/* */ {
/* 56 */ return "SpecialObject [name=" + null + ", id=" + null + ", date=" + null + "]";
/* */ }
/* */ }
提前致谢!
如果有人想玩,我已经添加了一个示例设置@ https://github.com/kilokahn/proguard-tester/blob/master/proguard-tester-parent/proguard-tester-rs-api/pom.xml