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

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

-keep class myjava.** {*;}

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

提前致谢。

【问题讨论】:

    标签: proguard


    【解决方案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,猜测这取决于您的环境设置
    猜你喜欢
    • 1970-01-01
    • 2015-03-26
    • 2021-09-11
    • 1970-01-01
    • 1970-01-01
    • 2011-02-24
    相关资源
    最近更新 更多