Démarrage rapide • Fonctionnalités • Contributeur • Licence
ProGuard est un réducteur, un optimiseur, un obfuscateur et un prévérificateur gratuit pour le bytecode Java :
Il détecte et supprime les classes, champs, méthodes et attributs inutilisés.
Il optimise le bytecode et supprime les instructions inutilisées.
Il renomme les classes, champs et méthodes restants en utilisant des noms courts et dénués de sens.
Les applications et bibliothèques qui en résultent sont plus petites et plus rapides.
Veuillez utiliser le suivi des problèmes pour signaler les bogues réels, les plantages , etc.
Tout d’abord, téléchargez la dernière version à partir des versions GitHub.
Pour exécuter ProGuard, sous Linux/MacOS, tapez simplement :
bin/proguard.sh < options... >
ou sous Windows :
binproguard.bat <options...>
En règle générale, vous placerez la plupart des options dans un fichier de configuration (par exemple, myconfig.pro
) et appellerez simplement
bin/proguard.sh @myconfig.pro
ou sous Windows :
binproguard.bat @myconfig.pro
Toutes les options disponibles sont décrites dans la section configuration du manuel.
ProGuard peut être exécuté en tant que tâche dans Gradle. Avant de pouvoir utiliser la tâche proguard, vous devez vous assurer que Gradle peut la trouver dans son chemin de classe au moment de la construction. Une solution consiste à ajouter la ligne suivante à votre fichier build.gradle
qui téléchargera ProGuard depuis Maven Central :
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath ' com.guardsquare:proguard-gradle:7.6.1 '
}
}
Vous pouvez ensuite définir une tâche avec configuration :
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 " ))
}
La configuration intégrée ressemble beaucoup à une configuration ProGuard standard. Vous pouvez trouver plus de détails sur la page de configuration de Gradle.
ProGuard fonctionne comme un compilateur d'optimisation avancé, supprimant les classes, champs, méthodes et attributs inutilisés, raccourcissant les identifiants, fusionnant les classes, les méthodes intégrées, propageant les constantes, supprimant les paramètres inutilisés, etc.
Les optimisations réduisent généralement la taille d'une application entre 20 % et 90 %. La réduction dépend principalement de la taille des bibliothèques externes que ProGuard peut supprimer en totalité ou en partie.
Les optimisations peuvent également améliorer les performances de l'application, jusqu'à 20 %. Pour les machines virtuelles Java sur les serveurs et les postes de travail, la différence n'est généralement pas perceptible.
ProGuard peut également supprimer le code de journalisation des applications et de leurs bibliothèques, sans avoir besoin de modifier le code source — en fait, sans avoir besoin du code source du tout !
Les pages de manuel (markdown, html) couvrent en détail les fonctionnalités et l'utilisation de ProGuard.
Construire ProGuard est simple - vous aurez juste besoin d'un JDK Java 8 installé. Pour créer à partir des sources, clonez une copie du référentiel ProGuard et exécutez la commande suivante :
./gradlew assemble
Les artefacts seront générés dans le répertoire lib
. Vous pouvez ensuite exécuter ProGuard à l'aide des scripts dans bin
, par exemple :
bin/proguard.sh
Vous pouvez publier les artefacts sur votre référentiel Maven local en utilisant :
./gradlew publishToMavenLocal
Les contributions, problèmes et demandes de fonctionnalités sont les bienvenus dans les deux projets. N'hésitez pas à consulter la page des problèmes et le guide de contribution si vous souhaitez contribuer.
Copyright (c) 2002-2023 Guardsquare SA. ProGuard est publié sous la licence publique générale GNU, version 2, avec des exceptions accordées à un certain nombre de projets.