2

私は Proguard を使用する初心者です (これは非常に便利です!)。開始点(パブリックインターフェイスなど)を使用して(難読化を一切行わずに)最小限のJARを作成したいと考えており、プロガードが依存クラスを推移的に取得することを望んでいました。ただし、依存クラスにはプライベートメンバー、そのパブリックゲッター/セッター、および注釈が欠けているようです。コンストラクターと 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>

すべての構成を試しましたが、うまくいかないようです。

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を追加しました

4

1 に答える 1