【发布时间】:2011-11-07 14:55:59
【问题描述】:
我有一个即将使用 ProGuard 进行混淆的库。 “图书馆模式”几乎适用于我的用例,即保留所有公共和受保护的类和类成员几乎没问题。 然而,由于 Java 的可见性要求,一些成员不能被设置为包私有或私有,因此它们是公共类,尽管它们不应该在库中。我想让它们混淆以更清楚地表明这些类不属于公共 api,以及获得更好的混淆和更小的库 jar。 有没有办法从proguard“保留”规则中排除一些项目而不按名称指定这些项目中的每一个(使用'!')。 理想情况下,我想用标记注释来注释这些类和成员,但据我所知,Proguard 只能被告知 keep 带有某些注释的项目。
【问题讨论】:
-
我最终对有问题的元素进行了注释,并编写了一个小型注释处理器,它转储 ProGuard 配置文件,使用我的自定义逻辑将所有要保留的成员一一列出:添加所有有效的公共/受保护成员没有那个注释。
标签: proguard