[Android, Proguard] 안드로이드 프로가드 설정하기 3
안녕하세요. 블랙진입니다.
프로가드에 사용하는 함수의 구체적인 역활에 대한 포스팅 입니다.
<프로가드 이전 포스팅>
출처 : Proguard manual
ProGuard(프로가드)
Shrinker(수축), Optimizer(최적화), Obfuscator(난독화) 적용하기 위한 Java Class File 입니다.
Shrinker
classes, fields, methods, attributes 찾아 사용하지 않은 것은 제거합니다.
Optimization
메소드의 바이트코드를 분석하고 최적화 합니다.
Obfuscation
classes, fields, methods 의 이름을 재정의 합니다.
키워드
- no rule
Proguard를 설정하면 classes와 members에 대해 shrink와 obfucate를 모두 진행합니다.
- keep
keep은 Proguard의 모든 장점을 적용하지 않습니다.
- keepclassmembers
- keepnames
- keepclassmembernames
사용방법
- keep class com.example.blackjin.**
//..
- keep class com.example.blackjin.** { *; }
blackjin 하위 모든 파일의 값을 keep 합니다.
- keep class * extends com.example.blackjin.Afile { *; }
Afile을 상속하는 클래스의 값을 keep 합니다.
- keep class * implements com.example.blackjin.Afile { *; }
Afile을 구현하는 클래스의 값을 keep 합니다.
- keep class * implements com.example.blackjin.Afile { <fields>; }
Afile을 구현하고 있는 파일의 field를 keep 합니다.
- keep class * implements com.example.blackjin.Afile { private <fields>; }
Afile을 구현하고 있는 파일의 private field를 keep 합니다. 물론 public, static 등 모두 사용 가능합니다.
- keep class * implements com.example.blackjin.Afile { <methods>; }
Afile을 구현하고 있는 파일의 methods를 keep 합니다.