gpt4 book ai didi

java - Proguard 实际上并没有保留我的类(简单)名称,这是什么原因?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:29:47 26 4
gpt4 key购买 nike

当我将以下“保留”规则放入我的混淆器配置中时:

-keepclasseswithmembernames class ** implements com.my.package.MyInterfaceName { <fields>; }

起初,似乎我所有实现了 MyInterfaceName 的类都得到了他们的类名和字段保持不变。

但实际上在运行时,这些类使用 getSimpleName() 返回不同的简单名称。

以此为例:

public class Foo {
public enum Bar implements MyInterfaceName { X, Y, Z }
}

X.getClass().getSimpleName() 返回 Foo$Bar 而不是仅返回 Bar ,后者未经 proguard 处理就返回。

最佳答案

内部类就像其他类一样。 ProGuard 这样对待它们,例如当混淆他们的名字时。如果要保留嵌套结构,则必须保留相关的可选属性:

-keepattributes InnerClasses

关于java - Proguard 实际上并没有保留我的类(简单)名称,这是什么原因?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15880446/

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