2014-12-08 2 views
1

Android Project에서 proguard 구성에 문제가 있습니다. 들어오는 JSON 데이터를 구문 분석하기 위해 Genson을 사용하고 있습니다. 서버쪽에는 Genson이 있기 때문에 추가 구성이나 디시리얼라이저가 필요하지 않습니다.Android가있는 Genson - Proguard 구성

모든 것이 디버그 모드에서 제대로 작동하지만 릴리스에서는 proguard가 작동하지 않습니다.

는 불행하게도, 난 런타임 동안 일부 오류가 : 데이터 모델 유지 클래스의 경우에도

FATAL EXCEPTION: main 
Process: com.es.mobile.meedy, PID: 16650 
java.lang.UnsupportedOperationException: Couldn't find parameter at 0 from type interface com.owlike.genson.Converter , you should first locate the parameterized type, expand it and then use typeOf. 
    at com.owlike.genson.reflect.TypeUtil.typeOf(Unknown Source) 
    at com.owlike.genson.GensonBuilder.withConverters(Unknown Source) 
    at com.mypackage.f.k.a(Unknown Source) 
    at com.a.a.b.n.a(Unknown Source) 
    at com.a.a.i.run(Unknown Source) 
    at android.os.Handler.handleCallback(Handler.java:733) 
    at android.os.Handler.dispatchMessage(Handler.java:95) 
    at android.os.Looper.loop(Looper.java:136) 
    at android.app.ActivityThread.main(ActivityThread.java:5086) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:515) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) 
    at dalvik.system.NativeStart.main(Native Method) 

그것은 발생합니다. 클래스, 클래스 멤버 등을 사용하여 모든 구성을 시도했습니다. 그 밖의 다른 작업은 무엇입니까?

편집

다른 무엇을 내가 알고 :

  • 내 프로젝트의 모든 클래스와 클래스를 유지했습니다.
  • 나는 genson과 클래스를 유지해야 (-keep 클래스 com.owlike.genson **. {*}) 내 클래스
  • instanceof를은
com.owlike.genson.Converter의 인스턴스가 있음을 보여줍니다
+0

저는 genson 작성자입니다. 메일 링리스트에 작은 예제를 게시하여 재현 할 수 있습니까? 거기에서 토론하는 것이 더 쉬울 것입니다. 그런 다음 여기에 해결책을 게시 할 것입니다. thanks – eugen

+0

-keepattributes Signature를 추가하고 genson에서 사용하는 모든 클래스를 유지하십시오. – eugen

+0

주석을 사용하는 경우 다음을 추가하십시오. -keepattributes * 주석 * – eugen

답변

1

문제에 대한 해결책은 -keepattributes 서명

주석 다음 사용되는이 옵션을 활성화해야하는 경우

너무 -keepattributes * 주석 * 또한

응용 프로그램 클래스의 존재 빼앗아/드를 추가했다 Genson이 제공해야합니다 : -keep class com.mypackage.model. ** {*; }

0
-keep class com.owlike.genson.*{ *; } 

ProGuard 구성에 해당 라인을 추가하십시오.

-keep [, 수정, ...] class_specification
클래스와 클래스 멤버를 지정합니다 (필드와 방법) 당신의 코드에 진입 점으로 보존한다. 예를 들어 응용 프로그램을 유지하려면 기본 메서드와 함께 을 주 클래스로 지정할 수 있습니다. 라이브러리를 처리하려면 공개적으로 액세스 할 수있는 모든 요소를 ​​지정해야합니다.

+0

나는 -keep class com.owlike.genson이다. ** {*; } 그리고 도움이되지 않습니다. –

+0

그런 경우에는 더 나은 대답을 기다려야 할 것입니다.:) 그것은'genson. *'입니다. :) –

+0

2x *는 genson이라는 것을 의미합니다. * 및 모든 것, 그래서 genson.xxx. * –

관련 문제