Proguard-混淆
ProGuard工具
:是一个免费的 Java类文件的压缩,优化,混肴器。它删除没有用的类,字段,方法与属性。使字节码最大程度地优化,使用简短且无意义的名字来重命名类、字段和方法 。
下载地址:https://sourceforge.net/projects/proguard/files/
文件下载之后进行解压,目录如下:
进入bin目录
执行proguardgui.bat
看到错误,找不到依赖的类,并且需要进行处理,导致混淆失败
保存配置文件
查看配置文件内容如下:
在配置文件中添加参数:-dontwarn com.jinfu.lock.**
:此行用于忽略-当前类找不到依赖的警告,当前表示包 com.jinfu.lock下找不到依赖的警告全都忽略
此时需要注意:
给用户调用的相关api不需要进行混淆;
返回给用户的数据信息相关不需要进行混淆;
添加参数:-keep class com.jinfu.lock.core.LockTemplate{*;}
:此行表示保留当前类不做混淆处理,因为此类将作为api进行调用;
添加参数:-keep class com.jinfu.lock.pojo.LockMessage{*;}
:此行表示保留当前类不做混淆处理,因为此类将作为返回对象
添加后的文件如下所示:
编写好相关配置文件后,再次打开proguardgui.bat;
但本次我们引入已经编写好的配置文件
点击next
找到我们之前配置的jar输出路径,找到混淆后的jar,并将其导入项目中查看
可以看到我们配置不进行混淆的类保留了原有的文件名。
进行混淆的类,被混淆成了a、b、c等极短且无意义的字符表示。
若混淆后的sdk运行正常,则已经混淆成功!
若运行异常,您可能需要额外添加其它相关配置;
配置文件语法举例:
//需要进行混淆的jar -injars 'C:\control.jar' //混淆后的jar存储位置以及jar名称 -outjars 'C:\control-proguard.jar' //忽略包 com.jinfu.lock下所有的警告 -dontwarn com.jinfu.lock.** //保留 com.jinfu.lock.core下LockTemplate类中所有成员,当前类不会被混淆 -keep class com.jinfu.lock.core.LockTemplate{*;} //保留 com.jinfu.lock.mina下MinaServer类中所有成员,当前类不会被混淆 -keep class com.jinfu.lock.mina.MinaServer{*;} -keep class com.jinfu.lock.pojo.LockMessage{*;} -keep class com.jinfu.lock.pojo.LockResult{*;} //保留 com.jinfu.lock.mina下CustomProtocolCodecFactory类中的方法 getEncoder、getDecoder,当前类会被混淆,但方法会被保留 -keepclassmembers class com.jinfu.lock.mina.CustomProtocolCodecFactory{ *** getEncoder(...); *** getDecoder(...); } -keepclassmembers class com.jinfu.lock.mina.CustomProtocolEncoder{ *** encode(...); } -keepclassmembers class com.jinfu.lock.mina.CustomProtocolDecoder{ *** doDecode(...); } -keepclassmembers class com.jinfu.lock.mina.MinaServerHandler { *** messageReceived(...); }
参考:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?