마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드 프로가드에서 문제가 납니다

0 추천
문제는 파악이 되었는데 해결방법을 모르겠습니다..ㅠㅠ

제금 제가 처한 상황은 이렇습니다.

개발환경은 이클립스이며 안드로이드를 개발하고 있습니다.

안드로이드 프로젝트 A와 B가 있습니다.

A는 메인프로젝트이며 B는 'Is Library'를 체크하여 A의 라이브러리로 사용되는 프로젝트입니다.

A의 libs폴더에는 아무것도 없으며, B의 libs에는 gson-2.2.2.jar가 들어가있습니다.

A에 프로가드를 적용하지 않고  Export Signed Application Pakage...으로 apk파일을 만든 뒤 설치하면 잘 실행됩니다.

그런데 프로가드를 적용한 뒤 apk파일을 만들면 gson을 사용하는 부분에서 앱이 종료되어버립니다.

여기까지가 제가 처한 상황입니다.

 

proguard-project.txt에 -dontwarn com.google.gson.**을 넣어도 보았고

-libraryjars ..\B\libs\gson-2.2.2.jar 를 넣어보았고 -keep class com.google.gson.** { *; }도 넣어보았지만

gson만 만나면 앱이 죽어버립니다. gson을 찾을 수 없어서 죽는거 같습니다.

Is Library로 라이브러리화 시킨 프로젝트의 libs폴더에 들어가있는 jar파일을 메인 프로젝트에서 인식시킬 수 있는 방법이 무엇인지 궁금합니다.
일개학생 (120 포인트) 님이 2014년 1월 9일 질문

1개의 답변

0 추천
##---------------Begin: proguard configuration for Gson ----------
# Gson uses generic type information stored in a class file when working with fields. Proguard
# removes such information by default, so configure it to keep all of it.
-keepattributes Signature
 
# For using GSON @Expose annotation
-keepattributes *Annotation*
 
# Gson specific classes
-keep class sun.misc.Unsafe { *; }
#-keep class com.google.gson.stream.** { *; }
 
# Application classes that will be serialized/deserialized over Gson
-keep class com.google.gson.examples.android.model.** { *; }
 

##---------------End: proguard configuration for Gson ----------

 

출처 : https://code.google.com/p/google-gson/source/browse/trunk/examples/android-proguard-example/proguard.cfg

 

건방진프로그래머 (26,630 포인트) 님이 2014년 1월 10일 답변
답변 감사드립니다.  proguard-project.txt 파일에
-keepattributes Signature
-keepattributes *Annotation*

-keep class sun.misc.Unsafe { *; }
-keep class com.google.gson.examples.android.model.** { *; }
부분을 넣어봤으나 여전히 Gson의 fromJson함수를 사용하면 앱이 죽어버립니다... 프로가드를 풀면 다시 정상작동하고요..
혹시나해서 새로운 프로젝트를 생성해서 같은 상황을 연출해보았는데
새 프로젝트에서는 또 정상적으로 작동하네요..
새로운 프로젝트에 소스를 넘겨서 해보려고합니다..
...