이번 포스팅은 Proguard 사용 시 생성되는 파일 목록과 내용에 대하여 알아보도록 하겠습니다.
기본적으로 프로젝트 생성을 하면 아래와 같은 파일이 생성이 됩니다.
- proguard-project.txt = Proguard 설정 파일
- project.properties = 프로젝트 설정 파일
project.properties 프로젝트 세팅 파일에 프로가드 사용 여부 주석을 해제합니다.
#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
해제 방법은 #을 삭제
Proguard를 실행하여 프로젝트를 빌드를 하게 되면 아래와 같은 파일 목록들이 생성이 됩니다.
해당 파일과 그 역할에 대하여 알아보도록 하겠습니다.
▶ dump.txt : 어플리케이션에서 사용중인 클래스들의 내부 구조에 대한 대략적인 정보
▶ mapping.txt : 난독화 과정에서 기존 Class 혹은 method가 어떤 난독화된 새로운 이름으로 매핑되었는지 그 목록. 난독화 된 어플리케이션에 발생하는 Log나, StackTrace 등 프로젝트 론칭하여 빌드 시 오류 및 디버깅 시 분석하기 위해서 꼭 챙겨 두셔야 합니다.
▶ seeds.txt : 난독화 되지 않은 클래스와 멤버들의 목록입니다.
▶ usage.txt : 사용되지 않기 때문에, apk 파일에서 제거된 코드들의 목록입니다. 혹시 제거되서는 안 되는 method나 Class가 제거되었는지 확인할 필요가 있습니다.
이제 Proguard 설정 파일인 proguard-project.txt 파일의 내용들에 대하여 알아보도록 하겠습니다.
-verbose : 오류 시 로그를 보여줌
-dontoptimize : 압축하지 않음 (사용하지 않는 것이 좋음)
-dontshrink : 사용하지 않는 메서드를 유지함
-dontwarn org.apache.**
-dontwarn (Warnig이 나온 클래스).**
// 빌드 시 can't find superclass or interface // can't find referenced class 등의 Warnig 이 나올 경우
// 클래스 Warnig을 무시합니다.
-libraryjars libs/android-support-v4.jar // 라이브러리 추가
-libraryjars libs/json-simple-1.1.1 .jar
-keep public class * { public protected *; }
// public class와 protected class의 경우를 난독화 하지 않음
// public class를 난독화 할 경우 메서드 호출 중 문제가 될 수 있음....
-keep class org.apache.http.** //org.apache.http. 하위 클래스를 전부 난독화 하지 않음
-keep interface org.apache.http.** //org.apache.http. 하위 인터페이스를 난독화 하지 않음
-keep class org.apache.http.** {
public *;
}
// org.apache.http. 하위 클래스중 public method 만 난독화 하지 않음
난독화 후 어플리케이션 실행하여 돌려보면서 난독화 범위를 적용해야 합니다.
Reference
1. https://leejiheg.tistory.com/entry/Android-Proguard-설정법-libs-라이브러리-포함 [지똥이]
'Development > Security' 카테고리의 다른 글
[Security] 공인인증 (0) | 2020.04.12 |
---|---|
[Security] 대칭키 암복호화 (0) | 2019.09.22 |
[Security] Base64 정리 (0) | 2019.09.09 |
[Security] 전자서명 (0) | 2019.09.05 |
[Security] 공개키 인증서 (0) | 2019.09.04 |