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 规则中的双星号是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章