有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在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();

    }

我如何确保这个接口的方法名不会混淆,同时仍然混淆类的其余部分


共 (3) 个答案

  1. # 1 楼答案

    我尝试了以下方法,似乎奏效了:

    -keep interface com.somepackage.SomeClass$someInterface
    
  2. # 2 楼答案

    对于那些正在寻找如何保持自定义注释(在java的@interface中定义)保留其所有成员的人

    实际上,您应该使用下面的方法来保存它:

    -keep @interface com.your.annotation.interface. {*;}
    
  3. # 3 楼答案

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

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