Proguard는 Java 바이트코드를 최적화, 난독화, 축소하는 데 사용되는 도구다.
앱 개발에서 주로 앱의 APK 크기를 줄이고, 리버스 엔지니어링을 어렵게 해 앱의 소스 코드를 보호하는데 사용된다.
제공하는 기능은
클래스, 필드, 메서드의 이름을 짧고 의미 없는 이름으로 변경하여, 소스 코드의 구조와 로직을 파악하기 어렵게 한다.
리버스 엔지니어링을 어렵게 해 앱의 보안을 강화한다.
사용되지 않는 클래스, 필드, 메서드, 속성 등을 제거해 앱의 크기를 줄인다.
앱의 전체적인 크기를 최소화하고, 다운로드 시간과 실행 시간을 개선한다.
바이트코드를 분석하여 더 효율적으로 실행될 수 있도록 개선한다.
예를 들면, 불필요한 연산을 제거하거나 반복문을 간소화 한다.
프로가드를 사용하기 위해서는 proguard-rules.pro
파일에서 앱에 적용할 규칙을 정의해야 한다.
이 파일에서는 난독화할 항목, 제외할 항목 등을 세밀하게 지정할 수 있다.
예를 들어, 일부 라이브러리가 리플렉션을 사용하는 경우 해당 클래스나 메서드를 난독화에서 제외해야 할 수 있다.
안드로이드 스튜디오 프로젝트에서는 build.gradle
파일에서 ProGuard를 활성화 하고, 사용할 규칙 파일을 지정할 수 있다.
android {
...
buildTypes {
release {
minifyEnabled true // ProGuard 활성화
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}