공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!! 포스팅 내용이 찾아주신 분들께 도움이 되길 바라며 더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^
|
이번 포스팅에서는 안드로이드 스튜디오에서 프로가드 적용 방법에 대해
알아봅니다.
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가지 에러 해결 방법에 대해 간단히
알아보았습니다. 이상입니다. 감사합니다.
'안드로이드' 카테고리의 다른 글
안드로이드 Fragment setOrientation landscape 프래그먼트 오리엔테이션 항상 가로 (0) | 2019.01.04 |
---|---|
레트로핏 사용 시 JsonArray 받을 때 Expected a string but was BEGIN_ARRAY at line 1 column 2 path $ (0) | 2019.01.04 |
안드로이드 이미지, 동영상 동적 삭제 File delete(), exists(), how to delete file(image, video) dynamically (0) | 2018.12.28 |
안드로이드 ImageView 가로세로 길이 같이 맞추는 법 (0) | 2018.12.21 |
안드로이드 갤러리에 저장된 동영상 목록 불러오기, 불러온 동영상 재생하기 (1) | 2018.12.20 |