Подтвердить что ты не робот

Сохранять имена методов внутреннего интерфейса в 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();

    }

Как обеспечить, чтобы эти имена методов интерфейса не были запутаны, но все еще запутывали остальную часть класса?

4b9b3361

Ответ 1

ProGuard использует соглашение об именах байт-кода Java, как это видно в именах файлов классов и stacktraces. Поэтому:

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

Ответ 2

Я попробовал следующее и, похоже, работал:

-keep interface com.somepackage.SomeClass$someInterface

Ответ 3

Для тех, кто ищет, как сохранить пользовательскую аннотацию (которая определена в @interface в java), сохранив все ее члены,

вы должны использовать, как показано ниже, чтобы сохранить его:

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