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

Android R8如何保留带指定注解成员的类名但混淆成员

保留含指定注解成员的类名并混淆成员的实现方案

完全可以实现,以Android/Java常用的ProGuard/R8混淆工具为例,配置思路如下:

  1. 先确保自定义的ABC注解本身不被混淆,否则混淆工具无法识别这个注解标记:
-keep class 你的包路径.ABC { *; }

把你的包路径替换成ABC注解实际所在的包名。

  1. 添加核心混淆规则,保留所有包含带@ABC注解成员的类的类名,但不对类成员做保留(默认会混淆成员):
-keepnames class * {
    @你的包路径.ABC <fields>;
    @你的包路径.ABC <methods>;
}
  • keepnames的作用是仅保留符合条件的类的名称,不会保留类的成员或其他结构;
  • <fields>匹配所有带注解的字段,<methods>匹配所有带注解的方法,确保只要类里有任意成员被@ABC标记,类名就会被保留;
  • 因为没有给成员添加keep规则,所以类里的所有成员(包括示例里的testField和testField2)都会被正常混淆。

如果用的是其他混淆工具,核心逻辑一致:先让工具能识别ABC注解,再配置规则匹配包含该注解成员的类,只保留类名,不对成员做保留设置即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 00:59:55