Guardsquare/proguard

GitHub: Guardsquare/proguard

ProGuard 是一款免费的 Java 字节码压缩器、优化器、混淆器和预校验器,帮助开发者减小应用体积并提升运行效率。

Stars: 3591 | Forks: 482



ProGuard


快速开始功能贡献许可证


ProGuard 是一款用于 Java 字节码的免费压缩器、优化器、混淆器和预校验器: * 它会检测并移除未使用的类、字段、方法和属性。 * 它会优化字节码并移除未使用的指令。 * 它会将剩余的类、字段和方法重命名为简短且无意义的名称。 由此生成的应用程序和库将变得更小、运行更快。 ## ❓ 获取帮助 请使用 **问题追踪器** 来报告实际的 **bug 🐛、崩溃** 等问题。

## 🚀 快速开始 ### 命令行 首先,从 [GitHub releases](https://github.com/Guardsquare/proguard/releases) 下载最新版本。 要在 Linux/MacOS 上运行 ProGuard,只需输入: ``` bin/proguard.sh ``` 或者在 Windows 上: ``` bin\proguard.bat ``` 通常,您会将大部分选项放在配置文件中(例如 `myconfig.pro`),然后只需调用: ``` bin/proguard.sh @myconfig.pro ``` 或者在 Windows 上: ``` bin\proguard.bat @myconfig.pro ``` 所有可用选项都在[手册的配置部分](https://www.guardsquare.com/manual/configuration/usage)中进行了说明。 ### Gradle Task ProGuard 可以作为 Gradle 中的 Task 运行。在使用 proguard task 之前,您必须确保 Gradle 在构建时能在其 class path 中找到它。一种方法是将以下行添加到您的 **`build.gradle`** 文件中,这将从 Maven Central 下载 ProGuard: ``` buildscript { repositories { mavenCentral() } dependencies { classpath 'com.guardsquare:proguard-gradle:7.9.1' } } ``` 然后,您可以定义一个包含配置的 Task: ``` tasks.register('proguard', ProGuardTask) { configuration file('proguard.pro') injars(tasks.named('jar', Jar).flatMap { it.archiveFile }) // Automatically handle the Java version of this build. if (System.getProperty('java.version').startsWith('1.')) { // Before Java 9, the runtime classes were packaged in a single jar file. libraryjars "${System.getProperty('java.home')}/lib/rt.jar" } else { // As of Java 9, the runtime classes are packaged in modular jmod files. libraryjars "${System.getProperty('java.home')}/jmods/java.base.jmod", jarfilter: '!**.jar', filter: '!module-info.class' //libraryjars "${System.getProperty('java.home')}/jmods/....." } verbose outjars(layout.buildDirectory.file("libs/${baseCoordinates}-minified.jar")) } ``` 内嵌的配置非常类似于标准的 ProGuard 配置。您可以在 [Gradle 设置页面](https://www.guardsquare.com/manual/setup/gradle) 上找到更多详细信息。 ## ✨ 功能 ProGuard 的工作方式类似于高级优化编译器,它可以移除未使用的类、字段、方法和属性,缩短标识符,合并类,内联方法,传播常量,移除未使用的参数等。 * 优化通常能将应用程序的大小减少 20% 到 90%。减少的幅度主要取决于 ProGuard 可以全部或部分移除的外部库的大小。 * 优化还可能将应用程序的性能提高多达 20%。对于服务器和桌面上的 Java 虚拟机来说,这种差异通常不太明显。 * ProGuard 还可以移除应用程序及其库中的日志记录代码,而无需更改源代码 — 实际上,甚至完全不需要源代码! 手册页面([markdown](docs/md), [html](https://www.guardsquare.com/proguard/manual))详细介绍了 ProGuard 的功能和使用方法。 ## 💻 构建 ProGuard 构建 ProGuard 很简单 - 您只需要安装 Java 8 JDK。 要从源码构建,请克隆一份 ProGuard 仓库并运行以下命令: ``` ./gradlew assemble ``` 构建产物将生成在 `lib` 目录中。然后,您可以使用 `bin` 中的脚本执行 ProGuard,例如: ``` bin/proguard.sh ``` 您可以使用以下命令将构建产物发布到本地的 Maven 仓库: ``` ./gradlew publishToMavenLocal ``` ## 🤝 贡献 欢迎在这两个项目中提出贡献、问题和功能请求。 如果您想做出贡献,请随时查看 [issues](https://github.com/Guardsquare/proguard/issues) 页面和 [贡献指南](CONTRIBUTING.md)。 ## 📝 许可证 Copyright (c) 2002-2025 [Guardsquare NV](https://www.guardsquare.com/). ProGuard 基于 [GNU General Public License, version 2](LICENSE) 发布,并[授予了多个项目例外情况](docs/md/manual/license/gplexception.md)。
标签:JS文件枚举, SOC Prime, 代码压缩, 代码混淆, 后台面板检测, 域名枚举, 字节码优化, 开发工具