빠른 시작 • 기능 • 기여 • 라이선스
ProGuard는 Java 바이트코드용 무료 축소기, 최적화기, 난독화기 및 사전 검증기입니다.
사용되지 않는 클래스, 필드, 메소드 및 속성을 감지하고 제거합니다.
바이트코드를 최적화하고 사용되지 않는 명령어를 제거합니다.
짧고 의미 없는 이름을 사용하여 나머지 클래스, 필드 및 메서드의 이름을 바꿉니다.
결과 애플리케이션과 라이브러리는 더 작고 빠릅니다.
실제 버그, 충돌 등을 보고하려면 문제 추적기를 사용하세요.
먼저 GitHub 릴리스에서 최신 릴리스를 다운로드하세요.
Linux/MacOS에서 ProGuard를 실행하려면 다음을 입력하세요.
bin/proguard.sh < options... >
또는 Windows의 경우:
binproguard.bat <options...>
일반적으로 대부분의 옵션을 구성 파일(예: myconfig.pro
)에 넣고 다음을 호출합니다.
bin/proguard.sh @myconfig.pro
또는 Windows의 경우:
binproguard.bat @myconfig.pro
사용 가능한 모든 옵션은 설명서의 구성 섹션에 설명되어 있습니다.
ProGuard는 Gradle에서 작업으로 실행될 수 있습니다. proguard 작업을 사용하기 전에 Gradle이 빌드 시 클래스 경로에서 해당 작업을 찾을 수 있는지 확인해야 합니다. 한 가지 방법은 Maven Central에서 ProGuard를 다운로드할 build.gradle
파일에 다음 줄을 추가하는 것입니다.
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath ' com.guardsquare:proguard-gradle:7.6.1 '
}
}
그런 다음 구성을 사용하여 작업을 정의할 수 있습니다.
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 설정 페이지에서 자세한 내용을 확인할 수 있습니다.
ProGuard는 고급 최적화 컴파일러처럼 작동하여 사용하지 않는 클래스, 필드, 메소드 및 속성을 제거하고, 식별자를 단축하고, 클래스를 병합하고, 메소드를 인라인하고, 상수를 전파하고, 사용하지 않는 매개변수를 제거합니다.
최적화는 일반적으로 애플리케이션 크기를 20%에서 90% 사이로 줄입니다. 감소량은 대부분 ProGuard가 전체 또는 일부를 제거할 수 있는 외부 라이브러리의 크기에 따라 달라집니다.
최적화를 통해 애플리케이션 성능이 최대 20%까지 향상될 수도 있습니다. 서버 및 데스크탑의 Java 가상 머신의 경우 일반적으로 차이가 눈에 띄지 않습니다.
ProGuard는 소스 코드를 변경할 필요 없이 애플리케이션과 라이브러리에서 로깅 코드를 제거할 수도 있습니다. 실제로는 소스 코드가 전혀 필요하지 않습니다!
매뉴얼 페이지(markdown, html)에서는 ProGuard의 기능과 사용법을 자세히 다루고 있습니다.
ProGuard를 구축하는 것은 쉽습니다. Java 8 JDK만 설치하면 됩니다. 소스에서 빌드하려면 ProGuard 저장소의 복사본을 복제하고 다음 명령을 실행하세요.
./gradlew assemble
아티팩트는 lib
디렉터리에 생성됩니다. 그런 다음 bin
의 스크립트를 사용하여 ProGuard를 실행할 수 있습니다. 예를 들면 다음과 같습니다.
bin/proguard.sh
다음을 사용하여 로컬 Maven 저장소에 아티팩트를 게시할 수 있습니다.
./gradlew publishToMavenLocal
두 프로젝트 모두 기여, 문제 및 기능 요청을 환영합니다. 기여하고 싶다면 이슈 페이지와 기여 가이드를 확인하세요.
저작권 (c) 2002-2023 Guardsquare NV. ProGuard는 여러 프로젝트에 허용되는 예외를 제외하고 GNU General Public License 버전 2에 따라 출시됩니다.