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

如何在ProGuard中配置保留类及私有实例变量不被混淆?

ProGuard保留指定类成员变量配置方案

原有配置失效原因

  • 类名规则不合法:.Repository不符合ProGuard命名规范,必须填写类的全限定名(即包名+类名,例如com.example.demo.Repository),也可以用**/Repository匹配任意包下的同名类,但不推荐避免误匹配。
  • 成员匹配规则范围错误:通配符*默认不会匹配私有成员变量,Repository$*是匹配该类的内部类,和普通成员变量无关。

正确配置

方案1:精准保留指定变量(推荐,无冗余保留)

直接指定要保留的变量名和类型,仅保留目标变量不被混淆,其他内容正常混淆:

# 替换为你自己的Repository类全限定名
-keepclassmembers class com.example.demo.Repository {
    private java.util.Set mInstalledApps;
}

如果需要同时保留类本身不被混淆,额外添加一条规则:

-keep class com.example.demo.Repository

方案2:保留该类所有成员变量

如果该类所有字段都不需要混淆,可以用<fields>通配所有成员变量:

-keepclassmembers class com.example.demo.Repository {
    <fields>;
}

验证方式

在ProGuard配置中添加-printmapping mapping.txt,打包后在构建产物中找到mapping.txt文件,搜索mInstalledApps,如果没有对应的混淆映射条目,说明保留成功。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 22:54:03