web-dev-qa-db-ja.com

内部インターフェースのメソッド名をproguardに保持する

私が持っているとしましょう...

public class SomeClass {


    public interface someInterface {

        public void firstMethod(String variable);


        public void secondMethod(String variable);


        public void thirdMethod();

    }
}

そして私は..

-keep,includedescriptorclasses public class com.somepackage.SomeClass {
    <fields>;
    <methods>;
}

-keep public interface com.somepackage.someInterface {*;}

私は結局

public interface someInterface {

        public void a(String variable);


        public void a(String variable);


        public void a();

    }

残りのクラスを難読化しながら、このインターフェイスのメソッド名が難読化されないようにするにはどうすればよいですか?

23
VicVu

ProGuardは、クラスファイル名とスタックトレースに見られるように、Javaバイトコード)の命名規則を使用します。

-keep public interface com.somepackage.SomeClass$someInterface {*;}
32
Eric Lafortune

私は以下を試しましたが、うまくいったようです:

-keep interface com.somepackage.SomeClass$someInterface
1
Phileo99

すべてのメンバーを保持するカスタム注釈(Javaの@インターフェースで定義されている)を保持する方法を探している人のために、

それを維持するには、実際には以下のように使用する必要があります。

-keep @interface com.your.annotation.interface. {*;}
0
SebastianX