proguard란?
- 코드를 축소, 최적화, 난독화를 해주는 도구
Proguard가 중요한 이유
1. 디컴파일시 코드의 노출을 방지
Proguard 설정을 하지 않는다면, 디컴파일러로 소스를 볼 수 있는 상황이 발생합니다
2. 앱을 최대한 작게 만들기 위해
클래스와 멤버 이름을 줄여 DEX 파일 크기를 줄입니다
Proguard 설정 방법
build.gradle 파일
buildTypes {
release {
minifyEnabled true // Proguard를 활성화
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
난독화를 시킬 경우, 예외적으로 난독화에서 제거해야할 부분이 발생할 수 있습니다.
외부 라이브러리의 경우 보통 프로가드 규칙이 정해져있는 경우가 많기에, 각 라이브러리를 참조하시길 바랍니다
Proguard 옵션
-keep class 패키지명.* {;} : 해당 패키지 난독화 제외
-keepatrributes : 소스파일, 라인 정보 유지
-dontwarn [class_filter] : class_filter에 해당하는 부분에 경고를 하지 않음
주로 쓰이는 옵션만 정리해보았습니다.
더 많은 옵션은 Proguard Manual 을 참고해보시길 바랍니다.
Decompile 확인해보기
APK가 디컴파일 됐을 때 소스를 확인하고 싶을 때 쓰이는 방법입니다.
1. dex2jar-2.0 설치 (APK를 .jar 파일로 변환해주는 툴)
CMD(명령 프롬프트) 실행 후
cd \ // 최상위 폴더로 이동
cd dex2jar-2.0이 설치된 경로 // 설치된 경로로 이동합니다
d2j-dex2jar.bat APK명.apk
를 실행하게 되면 해당 폴더에 jar 파일이 생성됩니다.
2.jd-Gui.exe 설치 (jar파일의 소스를 볼 수 있는 GDI 툴)
File - Open File - jar 파일 클릭
해당 파일의 소스를 까볼 수 있습니다. 여기서 난독화를 진행한 부분과 진행되지 않은 부분을 확인하시면 됩니다.
외부 라이브러리를 사용하는 경우엔 프로가드 규칙이 나와있어서 쉽지만,
내부의 코드는 프로가드를 적용하기가 꽤 번거로웠습니다.
잘 작동하는지 확인해보시면서 프로가드 적용을 하시길 바랍니다
궁금하신 점이나 의견이 있으시면 댓글 부탁드립니다 감사합니다 😊
'📱 Android' 카테고리의 다른 글
[Android] Firebase setCurrentScreen 지원중단 (0) | 2020.11.09 |
---|---|
[Android] 최신 Firebase Crashlytics Sdk 업데이트 (0) | 2020.11.05 |
[Android/kotlin] 특정 위치로 스크롤하기 (0) | 2020.08.12 |
[Android/kotlin] 시스템 폰트 크기에 영향받지 않게 하기 (1) | 2020.07.27 |
[Android] MPAndroidChart BarChart 사용하기 (0) | 2020.05.17 |