我怎样才能混淆com.foo。*但不包括com.foo.bar。*? (Proguard的)

时间:2016-06-16 02:14:55

标签: java android proguard

我试过了:

-keep class !com.foo.** { *; }
-keep class com.foo.bar.** { *; }

但它混淆了com.foo。*以外的类。(我不想要)

我也尝试过:

-keep class !com.foo.**, com.foo.bar.** { *; }

并且无法解析。

1 个答案:

答案 0 :(得分:0)

根据您的描述,我了解您希望将所有内容保存在com.foo.bar包中(+子包?)。您可以通过以下规则来实现此目的:

-keep class com.foo.bar.** { *; }

**模式也会匹配子包,如果您只想要当前包,请改用*

如果你使用这样的规则:

-keep class !com.foo.** { *; }

除了com.foo之外,你实际上会保留所有内容。**,所以你应该小心排除模式。之后始终至少包含一个包含模式。排除模式应该更具体,作为包含模式,见下文。

此规则应正确解析(仅测试它),但不起作用,因为ProGuard会在找到匹配后停止评估规则:

-keep class !com.foo.**, com.foo.bar.** { *; }

排除模式!com.foo.**将匹配com.foo和subpackages中的所有内容,因此它也将匹配com.foo.bar。

相关问题