2017-03-01 1 views
1

これは異常ですが、はDEBUGビルドモードでも、を除くすべてのAPIレスポンスで完全に正常にシリアライズされています。しかし、リリースモードでは、それは不正な引数の例外をスローしています。ここで"RELEASE"ビルドモードで例外と呼ばれる複数の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が異なることを確認しました。

また、リリースモードでもプロガードが有効になっています。

これは(proguardを有効にせずに)正常に動作していたため、コンパイル時にエラーが発生しませんでした。

+0

モデル 'SellerStoreFormData'に同じ名前の2つの' JSON'フィールドがあります –

+0

@aksachaこれは何度もチェックしましたが、何も見つかりませんでした。 – Killer

+0

親モデルでさえも – Killer

答えて

4

デバッグモードが動作していて、リリースが問題である場合、ほとんどの可能性はプロゴアの問題です。 SellerStoreFormDataを難読化から除外してみてください。

また、proguard Gson configurationが適所にあるかどうか、追加しない場合はチェックしてください。

+0

私はすでに適切なプロガードファイルを維持しています。しかし、それを更新することができます。それはセミコロンがないと愚かでした。プロガード構成のため、メッセージが誤解を招く可能性があります。 – Killer

関連する問題