본문 바로가기
개발/Adroid

[android] 안드로이드 프로가드 적용 방법과 에러 발생 시 해결 방법 android studio apply proguard

by KEI NETWORK 2019. 10. 4.
728x90

이번 포스팅에서는 안드로이드 스튜디오에서 프로가드 적용 방법에 대해

알아봅니다.

 

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가지 에러 해결 방법에 대해 간단히

알아보았습니다. 이상입니다. 감사합니다.

728x90

댓글