在proguard中保留内部接口方法名称

Vic*_*cVu 22 java android proguard

让我们说我......

public class SomeClass {


    public interface someInterface {

        public void firstMethod(String variable);


        public void secondMethod(String variable);


        public void thirdMethod();

    }
}
Run Code Online (Sandbox Code Playgroud)

我做..

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

-keep public interface com.somepackage.someInterface {*;}
Run Code Online (Sandbox Code Playgroud)

我结束了

public interface someInterface {

        public void a(String variable);


        public void a(String variable);


        public void a();

    }
Run Code Online (Sandbox Code Playgroud)

如何确保此接口的方法名称不会被混淆,同时仍然混淆类的其余部分?

Eri*_*une 31

ProGuard使用Java字节码的命名约定,如类文件名和堆栈跟踪中所示.因此:

-keep public interface com.somepackage.SomeClass$someInterface {*;}
Run Code Online (Sandbox Code Playgroud)

  • 我失去了一个小时,因为我使用了上面的语法,这对我不起作用.原因是我定义了没有公共访问器的接口(由于所有接口都是公共的,所以它已经过时).在这种情况下,您需要使用:-keep interface com.somepackage.SomeClass $ someInterface {*;}.我认为ProGuard应该"聪明",足以自动处理他的案子. (4认同)