gpt4 book ai didi

java - 如何使用 Proguard 保留扩展和实现接口(interface)的类

转载 作者:行者123 更新时间:2023-12-04 05:49:08 25 4
gpt4 key购买 nike

我需要保留所有扩展 com.opensymphony.xwork2.ActionSupport 并实现自定义接口(interface)的类。

当我尝试这个

-keepnames public class * extends com.opensymphony.xwork2.ActionSupport implements com.company.project.utils.Constantes {
*;
}

我收到以下错误:

error expecting openning '{' at 'implements'

最佳答案

如果有内存,您可以指定扩展另一个类的类或实现接口(interface)的类,但不能同时指定两者。 documentation并没有特别清楚地说明这一点,但它是隐含的。

有几种方法可以解决这个问题,假设您仅指定一个或另一个是不够的:

  • 创建一个空的“标记”接口(interface),并让您想要保留的类扩展它。
  • 为每个要保留的类添加一个静态(可以是private static final)标记字段,并在-keep 选项中指定。
  • 咬紧牙关,只列出你想要保留的所有类的名称。

  • 编辑

    另一种选择是创建一个这样的类:
    public abstract class Foo extends com.opensymphony.xwork2.ActionSupport implements com.company.project.utils.Constantes {
    // ...
    }

    然后,让所有要保留的类扩展该类。那么你只需要指定 * extends Foo在 -keep 选项中。

    关于java - 如何使用 Proguard 保留扩展和实现接口(interface)的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10295734/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com