프로가드는 코드를 난독화 및 최적화를 해주는 무료 오픈소스 툴입니다. 즉 프로가드는 컴파일된 앱 패키지의 코드를 난독화해서 다른 사람이 해당 패키지를 디컴파일 했을때 해독하기 어렵게 만드는 일종의 보안 장치이다.
우선 안드로이드 패키지에서 어플리케이션의 build.gradle에 들어가서 buildTypes를 확인한다.
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
release에서 minifyEnabled를 true로 설정하면 proguard가 적용이된다. debug 모드에서도 proguard를 적용해 테스트를 해보고싶다면 debug 모드도 추가해줘야 한다.
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
debug {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
proguard를 적용하지 않은 안드로이드 APK파일을 디컴파일하면 기존에 개발자가 작성했던 소스코드를 그대로 볼 수 있다. 하지만 proguard를 적용하면 다음와 같이 소스가 난독화된다.
*디컴파일 하는 방법은 이 글이서 다루지 않겠다.
Proguard를 적용한 안드로이드 APK파일을 디컴파일하면 해당 이미지처럼 모든 클래스, 메서드, 변수들의 이름들이 a,b,c 형태로 변경된것을 볼 수 있다. 즉 proguard를 적용하면 해독하는게 불가능하지는 않지면 매우 어렵게 만들어 어느정도의 보안을 적용할 수 있다.
Proguard를 적용하면 사용했던 라이브러리도 난독화되서 라이브러리의 클래스, 메서드, 변수의 이름도 변경이 되기 때문에 proguard를 적용하면 해당 라이브러리를 사용할수 없는 형태로 변하기 때문에 proguard-debug.pro에서 예외처리를 해줘야한다.
Proguard에서의 예외처리시 몇가지의 option들이 있다.
이외 자주 사용하는 라이브러리는 자체적으로 예외처리 코드를 제공해준다.
굿