我是使用Proguard的新手(這看起來非常有用!)。我希望用一個起點(比如一個公共接口)創建一個最小的JAR(沒有任何混淆),並希望proguard能夠過渡地提取依賴類。然而,依賴類似乎缺少私有成員,它的公共getter/setter和註解只有構造函數和toString方法可用。具體來說,我的SpecialService接口引用了SpecialObject(也許還有其他許多)。我想知道是否可以只提到SpecialService作爲一個keep類,並且它的所有依賴(非庫)c lasses(具有所有屬性 - 不模糊或優化)應該被拉到輸出jar中。Proguard縮小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 + "]";
/* */ }
/* */ }
提前感謝!
,如果有人想玩弄