我试过了:
-keep class !com.foo.** { *; }
-keep class com.foo.bar.** { *; }
但它混淆了com.foo。*以外的类。(我不想要)
我也尝试过:
-keep class !com.foo.**, com.foo.bar.** { *; }
并且无法解析。
答案 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。