2017-03-01 7 views
1

이것은 이상하지만을 제외한 모든 API 응답뿐만 아니라 DEBUG 빌드 모드에서도 직렬화가 완벽하게 올바르게 수행됩니다. 그러나 릴리스 모드에서는 불법 인수 예외가 발생합니다. 지금까지"RELEASE"빌드 모드에서 exception이라는 다중 JSON 필드 만

FATAL EXCEPTION: main Process: com.example.sampleapp, PID: 30480 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.sampleapp/com.example.sampleapp.activity.ManageStoreActivity}: java.lang.IllegalArgumentException: Unable to create converter for class com.example.sampleapp.model.seller.SellerStoreFormData 
    for method ApiInterface.getSellerInfoData 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
    at android.app.ActivityThread.-wrap11(ActivityThread.java) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
    at android.os.Handler.dispatchMessage(Handler.java:102) 
    at android.os.Looper.loop(Looper.java:148) 
    at android.app.ActivityThread.main(ActivityThread.java:5417) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 


Caused by: java.lang.IllegalArgumentException: Unable to create converter for class com.example.sampleapp.model.seller.SellerStoreFormData 
    for method ApiInterface.getSellerInfoData 
    at retrofit2.ServiceMethod$Builder.methodError(Unknown Source) 
    at retrofit2.ServiceMethod$Builder.createResponseConverter(Unknown Source) 
    at retrofit2.ServiceMethod$Builder.build(Unknown Source) 
    at retrofit2.Retrofit.loadServiceMethod(Unknown Source) 
    at retrofit2.Retrofit$1.invoke(Unknown Source) 
    at java.lang.reflect.Proxy.invoke(Proxy.java:393) 
    at $Proxy0.getSellerInfoData(Unknown Source) 
    at com.example.sampleapp.connection.a.i(Unknown Source) 
    at com.example.sampleapp.activity.ManageStoreActivity.onStart(Unknown Source) 
    at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1237) 
    at android.app.Activity.performStart(Activity.java:6253) 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2379) 
    ... 9 more 


Caused by: java.lang.IllegalArgumentException: class com.example.sampleapp.model.seller.SellerStoreFormData declares multiple JSON fields named f 
    at com.google.a.b.a.i.a(Unknown Source) 
    at com.google.a.b.a.i.a(Unknown Source) 
    at com.google.a.e.a(Unknown Source) 
    at retrofit2.converter.gson.GsonConverterFactory.responseBodyConverter(Unknown Source) 
    at retrofit2.Retrofit.nextResponseBodyConverter(Unknown Source) 
    at retrofit2.Retrofit.responseBodyConverter(Unknown Source) 
    ... 20 more 

을 시도하는 것 :

다음은이 예외에 대한 전체 로그는?

  1. 나는 시도와 같은 부모 클래스에서 여러 JSON 필드를 찾았다 그러나 어떤을 찾지 못했습니다.
  2. 각 필드에 @SerializedName이 다른지 확인했습니다.

또한 릴리스 모드에서 프로 가드를 사용할 수 있습니다.

이전에 잘 작동했으나 (프로 가드 사용 안함) 컴파일 시간 오류가 발생하지 않았습니다.

+0

'SellerStoreFormData' 모델에 같은 이름의 두 개의 JSON 필드가 있습니다. –

+0

@aksacha 여러 번 확인했지만 아무 것도 찾을 수 없습니다. – Killer

+0

부모 모델이 아니어도 – Killer

답변

4

디버그 모드가 작동하고 릴리스가 문제인 경우 대부분의 문제는 프로 가드 문제입니다. 난독 화에서 SellerStoreFormData를 제외 해보십시오.

또한 proguard Gson configuration이 있는지 확인하고 추가하지 않을 경우 확인하십시오.

+0

감사합니다. 나는 이미 적절한 프로 가드 파일을 유지하고 있습니다. 그러나 그것을 업데이 트는 작동합니다. 세미콜론이 없다는 것은 바보 같았습니다. Proguard 구성으로 인해 메시지가 오도 될 수 있습니다. – Killer