이번 포스팅에서는 안드로이드 스튜디오에서 프로가드 적용 방법에 대해
알아봅니다.
1. 기본적으로 안드로이드 스튜디오에서 프로젝트를 생성하면
Gradle Scripts -> proguard-rules.pro 라는 파일이 생성됩니다.
그리고 앱 레벨의 build.gradle에
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
이런 코드 또한 작성되어 있습니다.
코드를 보면 minifyEnabled false 죠?
말 그대로 활성화가 되어있지 않다는 뜻입니다.
false -> true로 변경해주게되면 앱을 릴리즈할 때 프로가드가 적용되고
코드가 난독화됩니다.
그리고 만약 Debug 할 때도 프로가드를 적용하고 싶다면
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
이렇게 debug도 추가해주면 됩니다.
그런데 프로가드 적용 후 에러가 발생하는 경우가 있습니다.
1. 라이브러리를 사용하는 경우
https://github.com/PhilJay/MPAndroidChart
위 같은 라이브러리를 사용하는 경우에 프로가드가 적용되어 있으면
에러가 발생하는데요. 이유는 다양하겠지만 보통 라이브러리의 코드가 난독화되면
클래스를 찾지 못해서 발생하는 듯 합니다.
보통 라이브러리는 Documentation을 같이 제공하죠.
문서를 찾아보면 Proguard 코드난독화에서 제외시키는 방법에 대해 나옵니다.
위 차트라이브러리의 경우 proguard-rules.pro 파일에
-keep class com.github.mikephil.charting.** { *; }
코드를 추가하라고 나옵니다. 시키는 대로 하면 에러 해결됩니다.
2. 'META-INF/proguard/androidx-annotations.pro'
저는 위 에러가 발생했는데요.
위 에러를 해결하려면 앱 레벨의 build.gradle -> android{} 블록 아래에
packagingOptions {
exclude 'META-INF/proguard/androidx-annotations.pro'
}
를 추가해주면 됩니다.
프로가드 적용 방법 및 발생하는 2가지 에러 해결 방법에 대해 간단히
알아보았습니다. 이상입니다. 감사합니다.
'개발 > Adroid' 카테고리의 다른 글
[android] pro guard parser error (0) | 2019.10.04 |
---|---|
[android] 멀티덱스, 섣불리 적용하지 마세요! 프로가드로 메소드 카운트 줄이는 방법 (0) | 2019.10.04 |
[android] 앱 데이터 폴더 경로 및 내부/외부 저장소 설명 (0) | 2019.10.01 |
[android] ImageLoader must be init with configuration before using (0) | 2019.10.01 |
[andorid] Sliding Tabs with PagerSlidingTabStrip (0) | 2019.09.27 |
댓글