Android/Proguard - 保留接口参数名称
Android/Proguard - keep interface param names
我正在构建一个 android 库。我有一个界面:
public interface MyInterface {
public void onInitializationSuccess(MySession mySession, String name, String email);
public void onInitializationFailure();
}
我有一个 proguard 规则来保留 MyInterface:
-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' 名称被保留是因为它是来自图书馆的自定义 class(有一个 proguard 规则来保留它)。我也想保留其他两个参数名称,因此 's' 和 's1' 开发人员会看到 'name' 和 'email'。如何在不禁用整个项目的混淆器混淆的情况下做到这一点?
我知道这个问题已经被问过几次了
此处:Proguard keep interface method variable names
此处:Proguard keep parameter names for interface and abstract class
这里:
但回复并不是很有帮助。
无法在proguard中指定保留接口的参数名。这是来自 javac 的限制。当 javac 生成 .class 文件时,它会省略参数名称。您可以在问题 here.
中找到有关 .class 文件结构的更多详细信息
我不确定您是否知道,但您提供的 现在已经有了答案(因为问题在您发布问题后已得到解答)。使用 java 8.
时似乎有解决方案
Java 8 javac does this with -g and -parameters flags.
我正在构建一个 android 库。我有一个界面:
public interface MyInterface {
public void onInitializationSuccess(MySession mySession, String name, String email);
public void onInitializationFailure();
}
我有一个 proguard 规则来保留 MyInterface:
-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' 名称被保留是因为它是来自图书馆的自定义 class(有一个 proguard 规则来保留它)。我也想保留其他两个参数名称,因此 's' 和 's1' 开发人员会看到 'name' 和 'email'。如何在不禁用整个项目的混淆器混淆的情况下做到这一点?
我知道这个问题已经被问过几次了
此处:Proguard keep interface method variable names
此处:Proguard keep parameter names for interface and abstract class
这里:
但回复并不是很有帮助。
无法在proguard中指定保留接口的参数名。这是来自 javac 的限制。当 javac 生成 .class 文件时,它会省略参数名称。您可以在问题 here.
中找到有关 .class 文件结构的更多详细信息我不确定您是否知道,但您提供的
Java 8 javac does this with -g and -parameters flags.