2016-07-25 8 views
5

私は、そのクラスのインスタンスを返すparse()という静的メソッドをいくつか含むクラス(50以上)を持っています。異なる戻り時間を持つ静的メソッドを保持するためのProguardの設定方法

class SomeType { 

    // Parse methods 
    public static SomeType parse(String text) { ... } 
    public static SomeType parse(Object obj) { ... } 
    ... 

    // Other methods 
    public void static somethingStatic(...) { ... } 
    public void somethingNotStatic(...) { ... } 
    ... 
} 

私は、これらのクラスとそのすべてのメソッドやフィールド除くparse(...)方法を難読化するProGuardの設定をしようとしている:これは、これらのクラスの一つの例です。基本的には、クラス名、すべての静的メソッドと非静的メソッド、さらにはクラスフィールドをわかりにくくしたい。

私が使用することを試みた:

-keepclassmembers class SomeType { 
    public static SomeType parse(***); 
} 

、それはSomeTypeのためにうまく働いたが、私は私の50個のクラスのそれぞれについて、このルールを記述する必要がしたい...ので、どのように私はできません一般化する?

私が試し:あなたのルールがちょうど一致するであろう、戻り値の型として***を使用し、ほとんど正しかった

答えて

8

...

-keepclassmembers class ** { 
    public static * parse(***); 
} 

をしかしProGuardのは、戻り値の型の構文について不平を言いますあらゆるタイプ:

-keepclassmembers class ** { 
    public static *** parse(***); 
} 

また-keepclassmembers-keepclasseswithmembersよりも優先されるのは、指定したメソッドだけを保持するためであり、クラス自体ではありません(説明するように、あなたの場合はおそらく必要ありません)。あなたが解析メソッドに複数の引数を持っている場合は

、あなたが使用する必要があります。

-keepclassmembers class ** { 
    public static *** parse(...); 
} 

...あらゆる型の引数のいずれかの数と一致します。

2
-keepclasseswithmembers class * { 
    public static *** parse(***); 
} 
関連する問題