java - 如何使用 Proguard 否定类名

标签 java proguard

我希望能够仅使用 proguard 来混淆类的子集,但是我遇到了困难,因为 proguard 似乎主要是为了混淆除黑名单之外的所有内容而设计的。

但是,proguard manual确实说:

For additional flexibility, class names can actually be comma-separated lists of class names, with optional ! negators, just like file name filters. This notation doesn't look very Java-like, so it should be used with moderation.

但没有这样的例子。

我正在尝试这个:

-keep class !**.licence.** {*;}
-keep class !**.*Licence*.** {*;}

但这确实有效。如果我删除 !,模式本身就会起作用(除上述之外,其他所有内容都会被混淆)。我也尝试过使用方法定义({*;} 已删除),但仍然不起作用。

有人有类名否定符的例子吗?是否有另一种方法告诉 proguard 仅混淆特定的类/包模式(不使用代码内注释)?

最佳答案

我终于自己弄清楚了。否定必须全部在一行上,如下所示:

-keep class !ca.nanometrics.**.licence.**,!ca.nanometrics.**.*Licence*{*;}

关于java - 如何使用 Proguard 否定类名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29474822/

相关文章:

Android 开发者工具 16 和混淆器中的 -keepclasseswithmembers 问题

android - Quickblox 和 Pro Guard 错误

android - 导出经过签名、模糊处理的 Android 应用程序时如何在 Eclipse 中设置 ProGuard?

java - 迭代二维数组

java - 无法修改 ListView 中的值

java - DynamoDB 的嵌套和组合注释不起作用

android - 为什么混淆器在我的调试 multidex 构建中运行?

Java Swing 使用 setDefaultCloseOperation 关闭窗口添加窗口监听器

Java布局问题

android - 错误 :Execution failed for task ':app:transformClassesAndResourcesWithProguardForRelease' while generating APK