Skip to content
阅读进度

如何使用 ProGuard/R8 混淆代码以增加反编译难度? ​

返回 权限与安全 目录

标准回答 ​

R8 会删除无用代码、做优化,并把名称变短;这能增加阅读成本,但不能把客户端变成保密保险箱。

通俗例子 ​

反编译后方法名可能从 loadUser 变成 a,逻辑仍可能被分析。密钥和真正的授权决策不能只藏在混淆代码里。

深入解释 ​

**混淆实际改了什么:**把可改名的类、方法和字段换成更难读的名字,提高直接读懂代码的成本。R8 还可能移除无用代码或进行优化,这些不是同一项工作。

**为什么需要保留规则:**反射、序列化或 native 代码可能按名字访问某个类,静态分析未必看得出来。需要有针对性地保留这些入口,并测试混淆后的 Release 包。

内容来源 ​

用完整回答理解机制,用真实证据解释项目。