Mulai Cepat • Fitur • Berkontribusi • Lisensi
ProGuard adalah shrinker, pengoptimal, obfuscator, dan preverifier gratis untuk bytecode Java:
Ini mendeteksi dan menghapus kelas, bidang, metode, dan atribut yang tidak digunakan.
Ini mengoptimalkan bytecode dan menghapus instruksi yang tidak digunakan.
Itu mengganti nama kelas, bidang, dan metode yang tersisa menggunakan nama pendek yang tidak berarti.
Aplikasi dan perpustakaan yang dihasilkan lebih kecil dan lebih cepat.
Silakan gunakan pelacak masalah untuk melaporkan bug aktual, kerusakan , dll.
Pertama, unduh rilis terbaru dari rilis GitHub.
Untuk menjalankan ProGuard, di Linux/MacOS, cukup ketik:
bin/proguard.sh < options... >
atau di Windows:
binproguard.bat <options...>
Biasanya, Anda akan memasukkan sebagian besar opsi ke dalam file konfigurasi (misalnya, myconfig.pro
), dan langsung menelepon
bin/proguard.sh @myconfig.pro
atau di Windows:
binproguard.bat @myconfig.pro
Semua opsi yang tersedia dijelaskan di bagian konfigurasi manual.
ProGuard dapat dijalankan sebagai tugas di Gradle. Sebelum Anda dapat menggunakan tugas proguard, Anda harus memastikan Gradle dapat menemukannya di jalur kelasnya pada waktu pembuatan. Salah satu caranya adalah dengan menambahkan baris berikut ke file build.gradle
Anda yang akan mengunduh ProGuard dari Maven Central:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath ' com.guardsquare:proguard-gradle:7.6.1 '
}
}
Anda kemudian dapat menentukan tugas dengan konfigurasi:
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 " ))
}
Konfigurasi yang disematkan mirip dengan konfigurasi ProGuard standar. Anda dapat menemukan detail selengkapnya di halaman penyiapan Gradle.
ProGuard bekerja seperti kompiler pengoptimalan tingkat lanjut, menghapus kelas, bidang, metode, dan atribut yang tidak digunakan, memperpendek pengidentifikasi, menggabungkan kelas, menyejajarkan metode, menyebarkan konstanta, menghapus parameter yang tidak digunakan, dll.
Pengoptimalan biasanya mengurangi ukuran aplikasi antara 20% dan 90%. Pengurangan ini sebagian besar bergantung pada ukuran perpustakaan eksternal yang dapat dihapus oleh ProGuard secara keseluruhan atau sebagian.
Pengoptimalan juga dapat meningkatkan kinerja aplikasi hingga 20%. Untuk mesin virtual Java di server dan desktop, perbedaannya umumnya tidak terlihat.
ProGuard juga dapat menghapus kode logging, dari aplikasi dan perpustakaannya, tanpa perlu mengubah kode sumber — bahkan, tanpa memerlukan kode sumber sama sekali!
Halaman manual (penurunan harga, html) mencakup fitur dan penggunaan ProGuard secara detail.
Membangun ProGuard itu mudah - Anda hanya perlu menginstal Java 8 JDK. Untuk membangun dari sumber, kloning salinan repositori ProGuard dan jalankan perintah berikut:
./gradlew assemble
Artefak akan dihasilkan di direktori lib
. Anda kemudian dapat menjalankan ProGuard menggunakan skrip di bin
, misalnya:
bin/proguard.sh
Anda dapat mempublikasikan artefak ke repositori Maven lokal Anda menggunakan:
./gradlew publishToMavenLocal
Kontribusi, masalah, dan permintaan fitur diterima di kedua proyek. Jangan ragu untuk memeriksa halaman masalah dan panduan berkontribusi jika Anda ingin berkontribusi.
Hak Cipta (c) 2002-2023 Guardsquare NV. ProGuard dirilis di bawah Lisensi Publik Umum GNU, versi 2, dengan pengecualian diberikan pada sejumlah proyek.