java - ProGuard 避免接口(interface)实现的混淆

标签 java obfuscation proguard

我有一个匿名类,它实现了另一个 jar 文件(作为库 jar 传入)的接口(interface)。

//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 已重命名 A 类中的 methodA()。请注意,此类错误混淆的实例可能会更多。

  • 如何阻止 proguard 重命名此类接口(interface)实现?
  • 为什么要重命名该方法?

编辑:
这就是我指定库 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。它只读取明确命名的内容。

最佳答案

ProGuard 不会重命名实现或覆盖库方法的程序方法——否则几乎任何经过处理的应用程序都无法工作。您应该仔细检查您的配置是否确实指定了正确的输入 jar 和库 jar。如果某些内容看起来不一致,ProGuard 可能已经打印出警告。

关于java - ProGuard 避免接口(interface)实现的混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18172606/

相关文章:

java - 为什么proguard不混淆方法主体?

java - 我们可以从软件的安装文件中揭示其源代码吗?

android - 尝试使用 proguard 运行测试

java - 选择非空属性

java - 将拦截器链添加到 JAX WS 提供程序

java - hibernate 查询

java - 同一个CacheManager的同一个Ehcache对象可以被多个线程使用吗?

java - 如何保护 Java 类文件中的逻辑?

添加 Facebook sdk 和 Google Firebase sdk 时的 Android Proguard 问题(重复)

java - 减少 android 应用程序 (apk) 大小