我如何仅混淆com.foo.*但是不包括com.foo.bar.*?(proguard)



我尝试了:

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

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

我也尝试了:

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

,它无法解析。

从您的描述中,我了解您要将所有内容都保留在com.foo.bar软件包中( Subpackages?)。您可以通过以下规则实现这一目标:

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

**模式也将匹配子弹,如果您只想使用当前软件包,请改用*

如果您使用这样的规则:

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

您实际上将保留除了com.foo。**,因此您应该谨慎使用排除模式。之后始终包含至少一个包含模式。排除模式应更具体地作为包含模式,请参见下文。

此规则应正确解析(只是对其进行测试),但将行不通,因为Proguard找到匹配项后将停止评估规则:

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

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

相关内容

最新更新