我是使用Proguard的新手(这看起来非常有用!)。我希望使用起点(比如一个公共接口)创建一个最小的JAR(没有任何混淆),并希望proguard将传递地接收依赖类。然而,依赖类似乎缺少私有成员,它的公共getter / setter和注释只有构造函数和toString方法可用。具体来说,我的SpecialService接口引用了SpecialObject(也许还有很多其他接口)。我想知道是否有可能只提到SpecialService作为保持类,并且所有依赖(非库)c lasses(具有所有属性 - 没有混淆或优化)都应该在输出jar中提取。
<options>
<option>-keepattributes</option>
<option>-keep @javax.ws.rs.Path public class com.kilo.SpecialService { private public protected *;}</option>
</options>
我已尝试过所有配置,但似乎无法正常工作。
SpecialService.java:
@GET
@Path("someComplexObjectsWithIntInputs")
List<SpecialObject> getSomeComplexObjectsWithIntInputs(
@QueryParam("ids") List<Integer> ids);
SpecialObject.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
答案 0 :(得分:0)
找出执行此操作的简单配置。愚蠢的我!
<option>-keepclassmembers class * { *;}</option>
更新了设置以反映这一点。