我试图阻止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将保留元数据.