저같은 경우 안드로이드 앱 개발시 JSON 데이터 처리를 위해 주로 Codehaus의 jackson json 라이브러리 (jackson-core-asl-x.x.jar, jackson-mapper-asl-x.x.jar)를 사용합니다.
이렇게 앱에서 Jackson JSON 라이브러리를 사용하는 경우 ProGuard 설정을 어떻게 해줘야하는지 제대로 정리된 자료가 별로 없더군요.
그동안은 릴리스 빌드시에 잘못된 proguard 설정때문에 발생하는 에러나, 앱 실행시에 잘못된 소스난독화로 인한 런타임 에러를 만날때마다
임시방편으로 설정의 의미도 모른채 설정을 조금씩 고쳐가면서 소뒷걸음질하다 운좋게 에러를 해결하곤 했습니다. 에러가 없게 설정했다고 해도 왜 그런 설정이 필요한지 자세한 이유를 알지는 못했죠.
미루고 미루다 이제야 ProGuard 홈페이지 문서와 Gson에서 사용하는 proguard 설정을 참고하여 아래와 같이 정리해보았습니다.
실제로 제가 개인적으로 개발중인 앱에 적용해서 빌드하고 테스트해보니 이상이 없었습니다.
# 어노테이션 보존
-keepattributes *Annotation*,EnclosingMethod
# 제너릭 타입 정보 보존
-keepattributes Signature
# Jackson이 참조하는 다른 라이브러리(joda-time 등) 없다는 경고 제거
-dontwarn org.codehaus.jackson.**
# java.lang.NoSuchFieldError: PUBLIC_ONLY 에러 제거
-keepnames class org.codehaus.jackson.** { *; }
# Jackson에 의해 JSON데이터와 매핑(바인딩)되는 모델(POJO) 클래스 보존
-keep public class my.app.model.** { *; }
# 모델 클래스외에 getter/setter 보존이 필요한 경우
#-keep public class my.app.** {
# public void set*(***);
# public *** get();
#}
'Android' 카테고리의 다른 글
[안드로이드] 안드로이드에 AOP를 적용할 수 있을까요? (0) | 2012.04.06 |
---|---|
[안드로이드] AspectJ 사용시 ProGuard 설정 (0) | 2012.04.06 |
[안드로이드] 스프링 RestTemplate 사용시 REST 통신내용 엿보기 (0) | 2011.07.14 |
[안드로이드] WebView와 웹서버간 HTTP 통신내용 엿보기 (0) | 2011.07.14 |
[안드로이드] Ant로 앱빌드시 서명용 비밀번호 자동입력 (0) | 2011.07.09 |