2016-09-06 9 views
0

私はいくつかのパブリックメソッドを持っているjavaクラスを持っています。 (これは既に行われています) 静的定数を含むInnerClassもあります。 クラスの構造は次のとおりです。Proguardを使用してInnerClassの特定のフィールドを保持する方法

public class MyClass { 
    public static MyInnerClass { 
     public static final String MY_CONSTANT_1="constant 1"; 
     public static final String MY_CONSTANT_2="constant 2"; 
     public static final String MY_CONSTANT_3="constant 3"; 
     public static final String MY_CONSTANT_4="constant 4"; 
     public static final int MY_INT_1 = 1; 
     public static final int MY_INT_2 = 2; 
    } 

    public void method1() { } 
    public void method2() { } 
    public void method3() { } 
    public void method4() { } 
} 

私は上記のクラスを推測したいと思います。私はいくつかの部分を保持し、残りの部分を削除したい。 私は方法を保ちたいmethod1 & method2。私は内部クラスを維持したいMyInnerClassMyInnerClassのフィールドは、MY_CONSTANT_1MY_CONSTANT_2、&、MY_INT_1のようにしたいと考えています。残りはすべて削除する必要があります。

-keep public class com.mypackage.MyClass** 
-keepclassmembers class com.mypackage.MyClass** { 
    public *** method1(...); 
    public *** method2(...); 
} 

-keepclassmembers class com.mypackage.MyClass.MyInnerClass** { 
    public static final java.lang.String MY_CONSTANT_1; 
    public static final java.lang.String MY_CONSTANT_2; 
    public static final int MY_INT_1; 
} 

これはトップクラスに正しく適用されますが、私のMyInnerClassは、私が検索 空であるが、それらのほとんどが言うどちらかそれを完全に削除するか、すべてを維持するために -

私ProGuardのは以下の通りです。

皆さんにさらなる情報が必要な場合は、お知らせください。あなたはクラスとその内部クラス間の区切り文字として「$」を使用する必要が

答えて

1

事前に おかげで、そのルールが正しく動作する必要があります。ok

-keepclassmembers class com.mypackage.MyClass$MyInnerClass { 
    public static <fields>; 
} 
+0

を。これが機能する – Arunkumar

+0

ことをしようとします。..そのとてもばかげていました。ありがとう – Arunkumar

関連する問題