{"id":13492607,"url":"https://github.com/Guardsquare/proguard","last_synced_at":"2025-03-28T10:32:35.147Z","repository":{"id":37335799,"uuid":"178034763","full_name":"Guardsquare/proguard","owner":"Guardsquare","description":"ProGuard, Java optimizer and obfuscator","archived":false,"fork":false,"pushed_at":"2024-10-25T14:20:11.000Z","size":6837,"stargazers_count":2861,"open_issues_count":160,"forks_count":409,"subscribers_count":71,"default_branch":"master","last_synced_at":"2024-10-29T15:03:49.309Z","etag":null,"topics":["android","build-tool","java","obfuscator","optimiser","proguard"],"latest_commit_sha":null,"homepage":"https://www.guardsquare.com/en/products/proguard","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Guardsquare.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-03-27T16:35:35.000Z","updated_at":"2024-10-28T02:54:19.000Z","dependencies_parsed_at":"2023-09-22T09:38:18.272Z","dependency_job_id":"cbe84026-19ee-4ed5-b29e-7da5b88cb463","html_url":"https://github.com/Guardsquare/proguard","commit_stats":null,"previous_names":[],"tags_count":50,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Guardsquare%2Fproguard","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Guardsquare%2Fproguard/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Guardsquare%2Fproguard/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Guardsquare%2Fproguard/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Guardsquare","download_url":"https://codeload.github.com/Guardsquare/proguard/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245743421,"owners_count":20665092,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","build-tool","java","obfuscator","optimiser","proguard"],"created_at":"2024-07-31T19:01:07.476Z","updated_at":"2025-03-28T10:32:35.141Z","avatar_url":"https://github.com/Guardsquare.png","language":"Java","readme":"\u003cp align=\"center\"\u003e\n  \u003cbr /\u003e\n  \u003cbr /\u003e\n  \u003ca href=\"https://www.guardsquare.com/proguard\"\u003e\n    \u003cimg\n      src=\"https://www.guardsquare.com/hubfs/Logos/ProGuard-Logo-Email.png\"\n      alt=\"ProGuard\" width=\"400\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003c!-- Badges --\u003e\n\u003cp align=\"center\"\u003e\n  \u003c!-- CI --\u003e\n  \u003ca href=\"https://github.com/Guardsquare/proguard/actions?query=workflow%3A%22Continuous+Integration%22\"\u003e\n    \u003cimg src=\"https://github.com/Guardsquare/proguard/workflows/Continuous%20Integration/badge.svg\"\u003e\n  \u003c/a\u003e\n  \n  \u003c!-- Github version --\u003e\n  \u003c!--\n  \u003ca href=\"releases\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/v/release/guardsquare/proguard\"\u003e\n  \u003c/a\u003e\n  --\u003e\n    \n  \u003c!-- Maven --\u003e\n  \u003ca href=\"https://search.maven.org/search?q=g:com.guardsquare\"\u003e\n    \u003cimg src=\"https://img.shields.io/maven-central/v/com.guardsquare/proguard-base\"\u003e\n  \u003c/a\u003e\n  \n  \u003c!-- License --\u003e\n  \u003ca href=\"LICENSE\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/license/guardsquare/proguard\"\u003e\n  \u003c/a\u003e\n\n  \u003c!-- Twitter --\u003e\n  \u003ca href=\"https://twitter.com/Guardsquare\"\u003e\n    \u003cimg src=\"https://img.shields.io/twitter/follow/guardsquare?style=social\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cbr /\u003e\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"#-quick-start\"\u003e\u003cb\u003eQuick Start\u003c/b\u003e\u003c/a\u003e •\n  \u003ca href=\"#-features\"\u003e\u003cb\u003eFeatures\u003c/b\u003e\u003c/a\u003e •\n  \u003ca href=\"#-contributing\"\u003e\u003cb\u003eContributing\u003c/b\u003e\u003c/a\u003e •\n  \u003ca href=\"#-license\"\u003e\u003cb\u003eLicense\u003c/b\u003e\u003c/a\u003e\n\u003c/p\u003e\n\u003cbr /\u003e\n\nProGuard is a free shrinker, optimizer, obfuscator, and preverifier for Java\nbytecode:\n\n* It detects and removes unused classes, fields, methods, and attributes.\n\n* It optimizes bytecode and removes unused instructions.\n\n* It renames the remaining classes, fields, and methods using short\n  meaningless names.\n\nThe resulting applications and libraries are smaller and faster.\n\n## ❓ Getting Help\nPlease use \u003ca href=\"https://github.com/guardsquare/proguard/issues\"\u003e**the issue tracker**\u003c/a\u003e to report actual **bugs 🐛, crashes**, etc.\n\u003cbr /\u003e\n\u003cbr /\u003e\n\n## 🚀 Quick Start\n\n### Command line\n\nFirst, download the latest release from [GitHub releases](https://github.com/Guardsquare/proguard/releases).\n\nTo run ProGuard, on Linux/MacOS, just type:\n\n```bash\nbin/proguard.sh \u003coptions...\u003e\n```\n\nor on Windows:\n\n```\nbin\\proguard.bat \u003coptions...\u003e\n```\n\nTypically, you'll put most options in a configuration file (say,\n`myconfig.pro`), and just call\n\n```bash\nbin/proguard.sh @myconfig.pro\n```\nor on Windows:\n\n```\nbin\\proguard.bat @myconfig.pro\n```\n\nAll available options are described in the [configuration section of the manual](https://www.guardsquare.com/manual/configuration/usage).\n\n### Gradle Task\n\nProGuard can be run as a task in Gradle. Before you can use the proguard task, you have to make sure Gradle can\nfind it in its class path at build time. One way is to add the following\nline to your **`build.gradle`** file which will download ProGuard from Maven Central:\n\n```Groovy\nbuildscript {\n    repositories {\n        mavenCentral()\n    }\n    dependencies {\n        classpath 'com.guardsquare:proguard-gradle:7.7.0'\n    }\n}\n```\n\nYou can then define a task with configuration:\n\n```Groovy\ntasks.register('proguard', ProGuardTask) {\n    configuration file('proguard.pro')\n\n    injars(tasks.named('jar', Jar).flatMap { it.archiveFile })\n\n    // Automatically handle the Java version of this build.\n    if (System.getProperty('java.version').startsWith('1.')) {\n        // Before Java 9, the runtime classes were packaged in a single jar file.\n        libraryjars \"${System.getProperty('java.home')}/lib/rt.jar\"\n    } else {\n        // As of Java 9, the runtime classes are packaged in modular jmod files.\n        libraryjars \"${System.getProperty('java.home')}/jmods/java.base.jmod\", jarfilter: '!**.jar', filter: '!module-info.class'\n        //libraryjars \"${System.getProperty('java.home')}/jmods/.....\"\n    }\n\n    verbose\n\n    outjars(layout.buildDirectory.file(\"libs/${baseCoordinates}-minified.jar\"))\n}\n```\n\nThe embedded configuration is much like a standard ProGuard\nconfiguration. You can find more details on the [Gradle setup page](https://www.guardsquare.com/manual/setup/gradle).\n\n## ✨ Features\n\nProGuard works like an advanced optimizing compiler, removing unused classes,\nfields, methods, and attributes, shortening identifiers, merging classes,\ninlining methods, propagating constants, removing unused parameters, etc.\n\n* The optimizations typically reduce the size of an application by anything\n  between 20% and 90%. The reduction mostly depends on the size of external\n  libraries that ProGuard can remove in whole or in part.\n\n* The optimizations may also improve the performance of the application, by up\n  to 20%. For Java virtual machines on servers and desktops, the difference\n  generally isn't noticeable.\n\n* ProGuard can also remove logging code, from applications and their\n  libraries, without needing to change the source code \u0026mdash; in fact,\n  without needing the source code at all!\n\nThe manual pages ([markdown](docs/md),\n[html](https://www.guardsquare.com/proguard/manual)) cover the features and usage of\nProGuard in detail.\n\n## 💻 Building ProGuard\n\nBuilding ProGuard is easy - you'll just need a Java 8 JDK installed. \nTo build from source, clone a copy of the ProGuard repository and run the following command:\n\n```bash\n./gradlew assemble\n```\n\nThe artifacts will be generated in the `lib` directory. You can then execute ProGuard using the\nscripts in `bin`, for example:\n\n```bash\nbin/proguard.sh\n```\n\nYou can publish the artifacts to your local Maven repository using:\n\n```bash\n./gradlew publishToMavenLocal\n```\n\n## 🤝 Contributing\n\nContributions, issues and feature requests are welcome in both projects.\nFeel free to check the [issues](https://github.com/Guardsquare/proguard/issues) page and the [contributing\nguide](CONTRIBUTING.md) if you would like to contribute.\n\n## 📝 License\n\nCopyright (c) 2002-2025 [Guardsquare NV](https://www.guardsquare.com/).\nProGuard is released under the [GNU General Public License, version\n2](LICENSE), with [exceptions granted to a number of\nprojects](docs/md/manual/license/gplexception.md).\n","funding_links":[],"categories":["Java","Java (504)","🔧 Packages"],"sub_categories":["⚡ Misc"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FGuardsquare%2Fproguard","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FGuardsquare%2Fproguard","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FGuardsquare%2Fproguard/lists"}