Android/Proguard-保留接口参数名称
我正在建立一个android库。我有一个界面: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
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中保留参数。