2013-07-22 21 views
0

我是使用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 + "]"; 
/* */ } 
/* */ } 

提前感謝!

,如果有人想玩弄

回答