Schnellstart • Funktionen • Mitwirkende • Lizenz
ProGuard ist ein kostenloser Shrinker, Optimierer, Obfuscator und Preverifier für Java-Bytecode:
Es erkennt und entfernt nicht verwendete Klassen, Felder, Methoden und Attribute.
Es optimiert den Bytecode und entfernt ungenutzte Anweisungen.
Die übrigen Klassen, Felder und Methoden werden mit kurzen, bedeutungslosen Namen umbenannt.
Die resultierenden Anwendungen und Bibliotheken sind kleiner und schneller.
Bitte verwenden Sie den Issue-Tracker, um tatsächliche Fehler, Abstürze usw. zu melden.
Laden Sie zunächst die neueste Version von GitHub-Releases herunter.
Um ProGuard unter Linux/MacOS auszuführen, geben Sie einfach Folgendes ein:
bin/proguard.sh < options... >
oder unter Windows:
binproguard.bat <options...>
Normalerweise fügen Sie die meisten Optionen in eine Konfigurationsdatei ein (z. B. myconfig.pro
) und rufen sie einfach auf
bin/proguard.sh @myconfig.pro
oder unter Windows:
binproguard.bat @myconfig.pro
Alle verfügbaren Optionen werden im Konfigurationsabschnitt des Handbuchs beschrieben.
ProGuard kann als Task in Gradle ausgeführt werden. Bevor Sie die Proguard-Aufgabe verwenden können, müssen Sie sicherstellen, dass Gradle sie zur Erstellungszeit in seinem Klassenpfad finden kann. Eine Möglichkeit besteht darin, die folgende Zeile zu Ihrer build.gradle
Datei hinzuzufügen, die ProGuard von Maven Central herunterlädt:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath ' com.guardsquare:proguard-gradle:7.6.1 '
}
}
Anschließend können Sie eine Aufgabe mit Konfiguration definieren:
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 " ))
}
Die eingebettete Konfiguration ähnelt weitgehend einer Standard-ProGuard-Konfiguration. Weitere Details finden Sie auf der Gradle-Setup-Seite.
ProGuard funktioniert wie ein fortschrittlicher optimierender Compiler, der ungenutzte Klassen, Felder, Methoden und Attribute entfernt, Bezeichner kürzt, Klassen zusammenführt, Methoden einfügt, Konstanten weitergibt, ungenutzte Parameter entfernt usw.
Durch die Optimierungen wird die Größe einer Anwendung typischerweise um 20 bis 90 % reduziert. Die Reduzierung hängt hauptsächlich von der Größe externer Bibliotheken ab, die ProGuard ganz oder teilweise entfernen kann.
Die Optimierungen können auch die Leistung der Anwendung um bis zu 20 % verbessern. Bei Java Virtual Machines auf Servern und Desktops ist der Unterschied im Allgemeinen nicht spürbar.
ProGuard kann auch Protokollierungscode aus Anwendungen und ihren Bibliotheken entfernen, ohne den Quellcode ändern zu müssen – tatsächlich, ohne dass der Quellcode überhaupt erforderlich ist!
Die Handbuchseiten (Markdown, HTML) behandeln die Funktionen und die Verwendung von ProGuard im Detail.
Das Erstellen von ProGuard ist einfach – Sie benötigen lediglich ein installiertes Java 8 JDK. Um aus der Quelle zu erstellen, klonen Sie eine Kopie des ProGuard-Repositorys und führen Sie den folgenden Befehl aus:
./gradlew assemble
Die Artefakte werden im lib
Verzeichnis generiert. Anschließend können Sie ProGuard mithilfe der Skripte in bin
ausführen, zum Beispiel:
bin/proguard.sh
Sie können die Artefakte in Ihrem lokalen Maven-Repository veröffentlichen, indem Sie Folgendes verwenden:
./gradlew publishToMavenLocal
Beiträge, Probleme und Funktionswünsche sind in beiden Projekten willkommen. Schauen Sie sich gerne die Seite „Probleme“ und den Beitragsleitfaden an, wenn Sie einen Beitrag leisten möchten.
Copyright (c) 2002-2023 Guardsquare NV. ProGuard wird unter der GNU General Public License, Version 2, veröffentlicht, mit Ausnahmen für eine Reihe von Projekten.