ProGuard高级模式匹配:如何配置规则排除多个包保留其余类
ProGuard 多包排除保留规则正确写法
ProGuard 原生不支持括号包裹逗号分隔多个否定匹配项的语法,类匹配规则按从左到右的顺序线性生效,否定规则必须前置,多个排除项需要逐个添加!前缀声明,最后追加正向匹配范围即可。
排除org.myorg.special、org.myorg.another两个包(包含其下所有子包)、保留其余所有类的正确配置如下:
-keep class !org.myorg.special.**, !org.myorg.another.**, ** { *; }
语法说明
!org.myorg.special.**:匹配org.myorg.special包及其所有子包下的类,标记为不纳入保留范围!org.myorg.another.**:同理标记第二个包下的类不纳入保留范围- 末尾的
**:匹配全量类路径下的所有类,作为最终保留的范围 - 如果仅需要排除两个包根目录下的类、不需要排除子包内容,把规则里的
.**替换为.*即可
注意:不要颠倒规则顺序,如果把正向匹配的
**写在否定规则前面,否定规则会直接失效,所有类都会被保留。
内容的提问来源于stack exchange,提问作者datahaki
相关产品推荐
相关产品推荐

