Java 改装:NPE,尝试在空对象引用上调用接口方法(仅限发布版本)
我是新手,我的实现在我的应用程序的调试版本中工作得很好,但是一旦我切换到发布版本,我就会在调用模型类(我的POJO类)时得到一个NPE。我确保在Proguard中添加Java 改装:NPE,尝试在空对象引用上调用接口方法(仅限发布版本),java,android,retrofit,Java,Android,Retrofit,我是新手,我的实现在我的应用程序的调试版本中工作得很好,但是一旦我切换到发布版本,我就会在调用模型类(我的POJO类)时得到一个NPE。我确保在Proguard中添加 -keep class retrofit.** { *; } -keep class retrofit.http.** { *; } -keep class retrofit.client.** { *; } -keep class com.squareup.okhttp.** { *; } -keep interface com
-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.**
以下是我的实现:
我所有的POJO类和服务器api调用都是库项目(我自己的SDK)的一部分。我忘记将SDK添加到proguard属性文件中,这导致了错误。现在一切正常。实际堆栈跟踪是什么?这将有助于了解proguard混淆/删除了哪些内容。我想我忘了将我自己的SDK类添加到proguard属性中。请立即尝试。
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());
}
});
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$1.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