SuperAPI AI 工具集

r8-proguard-desktop-survival

部署与运维

查看项目

更新于 10-17 16:16

技能介绍

本技能介绍在 JVM 桌面应用上运行字节码压缩/混淆工具(如 R8/ProGuard)时的注意事项与规则。桌面 JVM 与移动端有三个关键差异:类文件校验器严格且在加载时运行;UI 栈通过反射和名称访问渲染后端;打包器从构建输出自动检测 classpath,因此未被消费的压缩步骤不会生效。技能默认策略是始终开启压缩与混淆,运行时故障通过追加 keep 规则解决,而不是关闭优化或混淆。必须禁用三类优化:方法返回类型特化、局部变量重分配和方法内联,否则会在类加载时触发 bad-return-type 或 inconsistent-stack-map 错误,且仅出现在压缩后的发布构建中。混淆会破坏按名称解析的路径,如渲染后端、UI/AWT 互操作类、矢量动画渲染器内部类,症状为“运行但不绘制”或透明表面,且通常不报错。文档提供了针对本地绑定、协程运行时、HTTP 客户端、反射序列化、数据库运行时、ServiceLoader 发现和泛型签名等场景的 keep 规则示例,并强调 -dontwarn 必须注明理由,压缩器版本需匹配最新类文件,且必须将压缩后的 jar 显式接入打包器。验证时需在发布构建中实际测试文本渲染、动画、透明/视频表面、网络调用、数据库打开和本地绑定。推荐按整个包而非单个类添加 keep 规则。