proguard 规则中的双星号是啥意思?

Posted

技术标签:

【中文标题】proguard 规则中的双星号是啥意思?【英文标题】:What does the double asterisk mean in proguard rules?proguard 规则中的双星号是什么意思? 【发布时间】:2014-03-10 17:35:34 【问题描述】:

这个规则在proguard中的含义例如:

-keep class myjava.** *;

我理解 *; 部分表示类中的所有成员和方法。但是包名中的 2 个星号是什么意思呢?

提前致谢。

【问题讨论】:

【参考方案1】:

来自the manual:

classname、annotationtype、returntype 和 argumenttype 中的类型可以包含 通配符:'?'对于单个字符,'*' 表示任意数量的字符(但 不是包分隔符),'**' 表示任意数量的(任何)字符,'%' 表示 任何原始类型,“***”表示任何类型,“...”表示任意数量的参数。

【讨论】:

我错过了那部分。谢谢。 我还是不明白。那么 -keep @@annotation.Singleton public class * 和 -keep @@annotation.Singleton public class ** 有什么区别 @BasilMusa 如果我理解正确,单个 asterix 不包含包分隔符,因此,例如: com.google.* 将保留 com.google.test 或 com.google.anothertest 但不是 com.google.test.one。双星号将无限期保留所有潜在的子包 所以没有 *; 你不会保留成员和方法,那么你会保留什么呢? 对我来说使用双星号需要在行上方插入#noinspection ShrinkerUnresolvedReference,猜测这取决于您的环境设置

以上是关于proguard 规则中的双星号是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

双星号 (**) 通配符是啥意思?

purrr::map 中的第一个波浪号是啥意思

IBM小机中的WWN号是啥意思

#if、#else、#end if 中的井号是啥意思?

创建 Java 泛型类时,尖括号中的波浪号是啥意思?

帮看下这句css中的波浪号是啥意思