You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ProGuard语法中*与**的含义及两类keep规则的差异

ProGuard中*与**的语法区别

单个*的含义

  • 在类名匹配场景中,*仅匹配当前包层级下的直接类/接口,不会递归包含子包内的类。
  • 在类成员声明{*;}里,代表匹配该类的所有字段和方法。

双**的含义

**是递归匹配符,会匹配当前包及其所有子包层级下的所有类/接口,不管子包嵌套多少层都会被包含进来。

两条keep规则的具体区别

  1. 规则-keep class com.android.ons.** {*;}
    会保留com.android.ons包本身,以及它所有子包(比如com.android.ons.utils、com.android.ons.network.api这类深层子包)里的所有类,同时这些类的所有字段、方法也都会被保留,不会被混淆或移除。

  2. 规则-keep class com.android.ons.* {*;}
    仅保留com.android.ons包直接下属的类(比如com.android.ons.DemoClass),完全不会处理该包下的子包内容,子包里的类依然会被正常混淆或处理;同样,被保留的这些直接类的所有字段和方法都会被保留。

内容的提问来源于stack exchange,提问作者lucky1928

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 12:01:01