繁体   English   中英

如何仅混淆com.foo。*但不混淆com.foo.bar。*? (Proguard)

[英]How can I obfuscate only com.foo.* but excluding 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包(+子包?)中。 您可以通过以下规则来实现:

-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。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM