改造:NPE,尝试在空对象引用上调用接口方法(仅限发行版)

Retrofit : NPE , attempt to invoke interface method on null object reference (Release version only)

我是 Retrofit 的新手,我的实现在我的应用程序的调试版本中工作得很好,但是一旦我切换到发布版本,我在调用模型时得到一个 NPE class(我的 POJO class).我确保在 Proguard 中添加

-keep class retrofit.** { *; }
-keep class retrofit.http.** { *; }
-keep class retrofit.client.** { *; }
-keep class com.squareup.okhttp.** { *; }
-keep interface com.squareup.okhttp.** { *; }
-keepattributes Signature
-dontwarn okio.** 

这是我的 Retorfit 实现:

    TestService service = RequestHelper.createService(TestAPIService.class,
     TestAPIService.BASE_URL);

                    service.getResponse("USER", 40, new Callback<OffersResponse>() {


                        @Override
                        public void success(final TestResponse testResponse, final Response response) {

                            bundle.putParcelable("TestResponse", testResponse);
                            String user = testResponse.getUser().get(0).getName().toString();
                            Toast.makeText(getActivity(),user, Toast.LENGTH_LONG).show();

                        }

                        @Override
                        public void failure(RetrofitError error) {
                            Log.d(TAG, "" + error.toString());

                        }
                    });

调试版本为我提供了正确的用户名,在发布版本中,我在日志中从服务器获得了正确的响应,但是当我尝试用用户名显示祝酒词时,我得到了一个 NPE Attempt to invoke interface method on a null object reference

完整的堆栈跟踪

E/AndroidRuntime(17647): java.lang.NullPointerException: Attempt to invoke interface method 'java.lang.Object java.util.List.get(int)' on a null object reference
E/AndroidRuntime(17647):    at com.test.browser.check.w.a(Unknown Source)
E/AndroidRuntime(17647):    at com.test.browser.check.w.success(Unknown Source)
E/AndroidRuntime(17647):    at retrofit.CallbackRunnable.run(Unknown Source)
E/AndroidRuntime(17647):    at android.os.Handler.handleCallback(Handler.java:739)
E/AndroidRuntime(17647):    at android.os.Handler.dispatchMessage(Handler.java:95)
E/AndroidRuntime(17647):    at android.os.Looper.loop(Looper.java:135)
E/AndroidRuntime(17647):    at android.app.ActivityThread.main(ActivityThread.java:5221)
E/AndroidRuntime(17647):    at java.lang.reflect.Method.invoke(Native Method)
E/AndroidRuntime(17647):    at java.lang.reflect.Method.invoke(Method.java:372)
E/AndroidRuntime(17647):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
E/AndroidRuntime(17647):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
W/ActivityManager( 2144):   Force finishing activity com.test.browser/.check.Check

我所有的 POJO 类 和服务器 api 调用都是库项目(我自己的 SDK)的一部分。我忘记将我的 SDK 添加到导致错误的 proguard 属性 文件中。现在一切正常。