我试图阻止proguard从混淆接口(或抽象类)方法参数.
让我说我的lib中有这个接口:
package com.mypackage;
public interface MyLibListener {
void onSomething(boolean success,String message);
}
这个proguard文件:
-keepparameternames
-keep interface com.mypackage.MyLibListener {
*;
}
然后我组装发布,我得到:
package com.mypackage;
public interface MyLibListener {
void onSomething(boolean var1,String var2);
}
抽象类或使用@Keep注释也是如此.混淆选项keepparameternames似乎只适用于常规类.任何的想法?谢谢!
(相关SO:How to not obfuscate interface methods & it’s parameters using Progaurd in android?和Proguard keep interface method variable names)
解决方法
将ProGuard
options添加到您的配置中.
-keepattributes MethodParameters
如果您的类文件是hava方法参数元数据(使用Java8 -parameters等编译而成……),ProGuard将保留元数据.