web-dev-qa-db-ja.com

各フィールドを指定せずにプライベートフィールドを保持するようにProGuardに指示する方法

これは私のクラスです:

package com.tools.app.holiday;

public class Holiday {  

    private String name;

    private Calendar dateFrom = Calendar.getInstance();

    private Calendar dateTo = Calendar.getInstance();

    ...

これらのプライベートフィールドを保持するには、ProGuardルールファイルに以下を記述します。

-keepclassmembers class com.tools.app.holiday.Holiday {
    private Java.lang.String name;    
    private Java.util.Calendar dateFrom;
    private Java.util.Calendar dateTo;
}

ただし、各フィールドを個別に指定する必要はありません。これどうやってするの?

追伸私はこれのほとんどを Proguard keep classmembers から盗みました。なぜならその質問は私が求めているものに近いからです。

30
cja

ProGuard documenation によると、ワイルドカード<fields>は任意のフィールドに一致します。したがって、次のようになります。

-keepclassmembers class com.tools.app.holiday.Holiday {
    private <fields>;    
}

すべてのクラスでプライベートフィールドを保持する場合は、次のようにします。

-keepclassmembers class * {
    private <fields>;    
}
46
Idolon