본문 바로가기
Android 개발/PlayStore & 출시

ProGuard Rules 정리 (Retrofit & OkHttp, JSoup, GSon, RxJava, Glide etc)

by Developer88 2017. 7. 8.
반응형

다양한 라이브러리를 사용하는 만큼, 다양한 ProGuard를 사용해야 합니다.

그런데, 어떤 라이브러리는 이 부분에 대해서 명확히 정리하고 있고,

또 어떤 라이브러리는 그렇지 못합니다.


오늘은 제가 주로 사용하는 라이브러리들의 Proguard세팅과 링크들을 정리해 보겠습니다.



1. Retrofit & OkHttp


안드로이드 앱에서 네트워크를 사용한다면 대부분이 사용하는 라이브러리일 것 같은데요.

라이브러리도 잘 만들었지만, Proguard룰도 홈페이지에 잘 정리해 두었습니다.


역시 믿고 의지하는 Square네요.

아래 링크의 페이지에서, 하단부에 Proguard-Rule을 소개하고 있구요.

더불어 Retrofit이 사용하는 OkIo의 Proguard-Rule의 링크도 제공해 주고 있습니다.


http://square.github.io/retrofit/





참고로 OkHttp는 Proguard Rule이 필요하지 않다고 하는군요.

물론, JakeWharton 님께서 말씀해주신 거지만요.(https://github.com/square/okhttp/issues/2230)

일부 에러가 난다는 분도 있지만, 위의 링크를 참조해 주시면 좋을 것 같네요.



2. JSoup


Http파싱에 많이 사용하는 Jsoup인데요. 아래 한줄정도만 필요로 하는군요.

-keep public class org.jsoup.** { public *; }





3. GSon


json파싱에 많이 사용하는 GSon도 Rule이 필요한데요. 조금 긴 편입니다.

아래 링크를 참조해 주시구요.


https://github.com/google/gson/blob/master/examples/android-proguard-example/proguard.cfg





4. AdMob


앱의 수익화에 필수인 Admob도 Proguard룰이 필요하다고 하는데요.

https://firebase.google.com/docs/admob/android/faq?hl=ko





4. Realm


Realm은 Proguard룰이 필요하지 않습니다.

라이브러리 내부적으로 Proguard 설정을 해주고 있다고 하는군요.

역시 멋있네요~.


아래 링크를 참조해 주세요

https://realm.io/docs/java/latest/#proguard




5. RxJava 2.x / RxAndroid 2.x


RxJava의 경우는 null을 허용하는 버전 1.x의 경우, Proguard-rule이 필요한 것으로 알려져 있습니다.

오픈소스 개발자들이 샘플 proguard를 제공해주자는 애기는 나왔던 것으로 알고 있지만요.

아직 공식 홈페이지나 GitHub에서 제시해준 Proguard-rule 같은 것은 없습니다.


개인 개발자들이 대안으로 제시하고는 있는 것들만 인터넷에 있습니다.


참고로,  null값을 허용하지 않는, RxJava 2.x는 Proguard-Rule이 필요하지 않은 것으로 알려져 있는데요.

1.x의 지원도 1,2년 안에는 끝날 듯 하니, 되도록이면,  2.x버전을 사용하는 것이 좋을 것 같습니다.

(물론 많이 바뀐 2.x대에 대해서 공부해야하는 cost가 있긴 하지만요.)



6. Glide


구글이 인수했다고 하는 Glide는 공식 github페이지에 Proguard-rule을 정리해서 올려주었습니다. 

유료인 DexGuard를 사용하는 경우에는 추가로 한줄이 더 필요한데 아래링크를 참조해 주세요~.

https://github.com/bumptech/glide#proguard




728x90

댓글