Android/Proguard-保留接口参数名称

Android/Proguard-保留接口参数名称,android,proguard,Android,Proguard,我正在建立一个android库。我有一个界面: public interface MyInterface { public void onInitializationSuccess(MySession mySession, String name, String email); public void onInitializationFailure(); } 我有一个proguard规则来保持我的界面: -keep public class com.package.name.M

我正在建立一个android库。我有一个界面:

public interface MyInterface {
    public void onInitializationSuccess(MySession mySession, String name, String email);
    public void onInitializationFailure();
}
我有一个proguard规则来保持我的界面:

-keep public class com.package.name.MyInterface { *; }
当我尝试在另一个项目中实现此库并创建MyInterface时,android studio就是这样创建它的:

new MyInterface() {
        @Override
        public void onInitializationSuccess(MySession mySession, String s, String s1) {

        }

        @Override
        public void onInitializationFailure() {

        }
    }
我猜之所以保留“mySession”名称,是因为它是库中的自定义类(有一个proguard规则来保留它)。我还想保留另外两个param名称,因此开发人员将看到“name”和“email”,而不是“s”和“s1”。在不禁用整个项目的proguard模糊处理的情况下,我如何做到这一点

我知道这个问题已经被问了好几次了

在这里:

在这里:

在这里:


但是回复并没有真正的帮助。

没有办法在proguard中指定以保留接口的参数名。这是javac的局限性。当javac生成.class文件时,它会忽略参数名。您可以在问题中找到有关.class文件结构的更多详细信息

我不知道你是否知道,但你提供的答案现在已经有了(因为这个问题是在你发布你的问题后回答的)。使用Java8时似乎有一个解决方案

Java8JavaC使用-g和-parameters标志来实现这一点


所以你需要保留参数名。。。。你有没有尝试过像“保留参数名”这样不带空格的明显方法?我试过了-keepparameternames似乎在整个项目中起作用。我只想在MyInterface中保留参数。