我有一个匿名类,它实现了另一个 jar 文件(作为库 jar 传入)的接口。
//Some jar file
public interface B
{
void methodA();
}
//My App
public class A implements B
{
public void methodA()
{
//implementation here
}
}
并以下列方式在应用程序中使用:
B var = new A();
var.methodA();
在遇到错误(调用抽象方法)后,我注意到 ProGuard 已methodA()
在 class中重命名A
。请注意,可能有更多此类错误混淆的实例。
- 如何阻止 proguard 重命名此类接口实现?
- 为什么首先要重命名该方法?
编辑:
这就是我指定我的库 jar 的方式:
<libraryjar filter="!**\some.specific.jar,${base.dir}\dist\lib\*.jar" />
也试过:
<libraryjar jarfilter="!**\some.specific.jar" />
<libraryjar jarfilter="${base.dir}\dist\lib\*.jar" />
都没有奏效。ProGuard 不会读取过滤器指定的库 jar。它只读取明确命名的那些。