DEX 忽略列表
「DEX 忽略列表」用于按包名前缀跳过指定代码的 DEX 处理。把第三方 SDK(推送、支付、地图、统计、广告等)加入列表后,这些库不会被改写,从而避免混淆后崩溃、功能异常或 JNI/反射失效,同时自家业务代码仍然得到完整保护。
功能说明
- 列表中的包前缀所对应的 smali 文件,会跳过以下 DEX 相关处理:
- 注入垃圾指令、注入垃圾分支、注入垃圾跳转、注入垃圾代码、指令乱序
- 类重命名、方法重命名、域重命名
- 字符串加密、So 文件加密、调用隐藏
- 移除无用代码(Debug 信息)、移除日志信息
- 资源混淆、APK 文件处理、APK 防篡改等与 DEX 无关的选项不受影响,仍会作用于整个 APK。
- 软件内置常用 SDK 默认列表(android、androidx、com/google、com/tencent、com/umeng、com/alipay 等数百条),首次打开即为默认列表,一般无需修改。
使用步骤
-
打开软件,在左侧标签栏点击 DEX 忽略列表,进入列表页面。

-
在文本框中每行填写一个包名前缀,例如:
com/example/sdk
com/example/push
cn/demo/analytics -
如需处理被默认列表覆盖的第三方 SDK,直接删除对应行即可;如需保留默认列表并追加自己的库,在末尾新增行即可。
-
底部按钮说明:
- 清空列表:清空全部内容,表示所有包都参与 DEX 处理(保护最强,兼容性风险最高)。
- 恢复内置默认:一键还原为软件内置的常用 SDK 列表。
-
回到 首页 标签页,选择 APK、勾选混淆选项,点击 开始处理。忽略列表会在本次处理中自动生效。
-
如需复用配置:点击首页 保存配置,下次启动软件会自动载入该列表;也可以在菜单 文件 → 导出配置 导出
config.obf给命令行(CLI)或团队其他成员使用,对应字段为ignorePackages。
填写规则
| 规则 | 说明 | 示例 |
|---|---|---|
| 分隔方式 | 支持换行、逗号 ,、分号 ; 分隔 | com/a,com/b |
| 两种写法 | 点分隔和斜杠分隔等效,内部统一按 包/路径/ 处理 | com.example = com/example |
| 前缀匹配 | 匹配该前缀下的所有子包与类 | com/tencent/ 覆盖 com/tencent/mm/... |
| 自动整理 | 自动去除首尾空格与首尾 /、补上结尾 /、去重并忽略空行 | /com/demo/ → com/demo/ |
| 大小写敏感 | 按实际包名填写,注意不要改变大小写 | com/Demo 不会匹配 com/demo |
如何确认包名
用反编译工具打开 APK,查看 smali 目录下的目录层级;也可以直接看 Manifest / 集成文档中 SDK 的 groupId 或包路径,一级或两级包名前缀通常就足够。
使用场景
- 混淆后某个 SDK 功能失效或崩溃:推送收不到、支付调不起、地图白屏、统计无数据等,把对应 SDK 的包名加入列表后重新处理。
- 使用反射、JNI、插件化或热修复的模块:类/方法/域重命名会改写符号,导致
Class.forName、native 方法绑定失败;将这些包加入列表可保留原符号。 - 只想重点保护自家业务代码:保留内置默认列表,再补自家依赖的私有库包名,兼顾加固效果与稳定性。
- 大型游戏或超大多 dex 包:忽略无关的第三方库,可缩短处理时间、降低无用指令注入带来的体积增长。
- 团队 / CI 统一标准:把调试好的忽略列表随
config.obf一起导出,保证多人、多处处理结果一致。
注意事项
注意
- 该列表仅在 全量处理 模式下生效;轻量处理模式不解包 DEX,不会执行上述 DEX 处理。
- 清空列表 意味着 APK 中所有包(包括第三方 SDK)都会参与处理,出现问题的概率显著上升,建议仅在测试或明确知道后果时使用。
- 方法与域重命名只会跳过「被忽略包内部的定义」,整个 APK 中对这些方法/字段的引用仍会同步更新,以保证程序可正常运行。
- 为保证 类重命名 的结果一致,
com/facebook/与com/adjust/即使写入忽略列表,仍会参与类重命名处理。 - 若加入某个 SDK 后问题依旧,请先关闭类重命名、DEX 加壳等高侵入性选项重试,并通过处理诊断日志定位原因。