java proguard混淆通配符

类名 通配符如下:
| 通配符 | 含义 |
| --- |
| ? | 匹配单个字符,包名分隔符(.)除外 |
| * | 匹配除(.)外的任意字符 |
| ** | 匹配任意字符(包含.),如com.rush.**匹配com.rush包下的所有类及其所有子包的类。 |

字段和方法 通配符如下:
| 通配符 | 含义 |
| --- |
| <init> | 匹配所有构造方法 |
| <fields> | 匹配所有字段 |
| <methods> | 匹配所有方法 |
| ? | 匹配单个字符,包名分隔符(.)除外 |
| * | 匹配除(.)外的任意字符 |

类型 通配符如下:
| 通配符 | 含义 |
| --- |
| % | 匹配原始类型,如int, boolean等 |
| ? | 匹配任意单个字符 |
| * | 匹配除包名分隔符(.)外的任意字符 |
| ** | 匹配任意字符,包括包名分隔符(.) |
| *** | 匹配任意类型(原始类型、非原始类型、数组或非数组类型)|
| ... | 匹配任意参数个数,任意参数类型 |

其中类配置完整定义如下,其中[]表示可选:

######说明:
***"[]“***方括号表示里面的内容是可选的;
***"..."***省略号表示可以能很多选项;
***"|"***竖线划分了不同的选择
"()"普通非粗体括号表示属于同一组的属性

- ***class***关键字表示任何类或接口,***interface*** 仅指示接口,***enum***关键字仅指示枚举;***interface,enum***前面加一个***"!"***表示非既是不是接口也不是枚举。
- 每个***classname***必须是全名,如:***java.lang.String、com.example.ClassName***;同时***classname***还可以是包含下面一些通配符的正则表达式:

  ***?*** 问号匹配单个字符,但不能是包名分隔符;如:***"mypackage.Test?"***,能匹配***"mypackage.Test1"、
"mypackage.Test2"***,但是不能匹配***"mypackage.Test12"***;
  
  ***\**** 单个星号能匹配任意多个字符,但除了包分隔符,如:***"mypackage.\*Test\*"***,能匹配***”mypackage.Test、mypackage.YourTestApplication“***,但是不能匹配***"mypackage.mysubpackage.MyTest"***; ***"mypackage.\*"***匹配包mypackage下面的类,但不包括它的子包里面的类;
  ***\*\**** 双星号匹配任意多个字符,包括包名的分隔符;如:***"\*\*.Test"***,匹配了所有Test类,***"mypackage.\*"***匹配了包mypackage下面的所有子类,包括它的子包的类。

- ***extends 、implements*** 指示一个特定的类,既是表示继承或者是实现了指定的类(接口)的类才符合条件。
- ***@*** 指示被注释类型注释了的类或类成员。注释类型与类名一样被指定。
- 类成员、方法和java语法差不多,方法参数就想javadoc一样,不用包含参数名称。成员、方法也可以包含一些通配符:
***<init>*** 匹配了构造方法;
***<fields>*** 匹配了成员变量;
***<methods>*** 匹配了方法;
***\**** 匹配了任意成员、方法;
上面这些没有任何返回类型,只有***"<init>"***有参数列表。
成员变量、方法也可以是包含通配符的正则表达式。可以包含以下通配符:
***?*** 匹配方法中任何单个字符;
***\**** 匹配方法中任何多个字符;
类型可以包含一下通配符
***%***  匹配方法中的原始类型(***"boolean"、"int"...***,不包括***"void"***);
***?*** 匹配类名中的单个字符;
***\**** 匹配类名中的多个字符,不包括包分隔符;
***\*\**** 匹配类名中的多个字符,包括包分隔符;
***\*\*\**** 匹配原始类型,非原始类型,数组、非数组
***\-\-\-*** 匹配任意数量和类别的参数。
注意:***?、\*、\*\**** 不会匹配原始类型,只有**\*\*\***可以;如:***"\*\* get\*()"***匹配***“java.lang.Object getObject()”*** 不会匹配***"float getFloat()"*** 也不匹配***"java.lang.Object[] getObjects()"***;
- 构造函数可以用短名(不含包名),或者全名(含包名);java中构造函数可以有参数,但没有返回类型。
- 可以设置类,类成员访问修饰符(***public,private...***),它们通常帮助限制通配符类和成员。只能匹配具有指定修饰符的类或者成员。**"!"**表示非。
  容许设置多个标识(***"public static"***),但如果它们是冲突的就只能设置一个(如***public***和***private***)

ProGuard支持编译器设置的一些修饰符***synthetic、bridge、varargs***;

下面是一些简单的列子:


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,172评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,346评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,788评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,299评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,409评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,467评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,476评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,262评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,699评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,994评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,167评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,827评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,499评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,149评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,387评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,028评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,055评论 2 352