2016-08-05 2 views
0

У меня есть это пустое исключение каждый раз, когда я включаю Proguard и использую Retrofit, для его решения я добавил свои классы, которые используют Retrofit в список Proguard, например:NullException int java.util.List.size() с использованием Retrofit2, когда Proguard включен

-keep class com.abohani.example.utils.ban { *; } 

Даже Тхо я добавил его, я имею следующую ошибку:

java.lang.NullPointerException: Attempt to invoke interface method 'int java.util.List.size()' on a null object reference 
at com.abohani.example.utils.BanUtil$2.onResponse(BanUtil.java:91) 

Эта ошибка происходит только тогда, когда Proguard включена, когда он не будет отключен без ошибок на всех, заявил линия в образце ошибки/кода:

Retrofit retrofit = new Retrofit.Builder() 
      .baseUrl(Constants.API_PATH) 
      .addConverterFactory(GsonConverterFactory.create()) 
      .build(); 

    ReApi Api = retrofit.create(ReApi.class); 
    Call<Model> Connection = Api.GetList(UID,Key); 
    Connection.enqueue(new Callback<Model>() { 
     @Override 
     public void onResponse(Call<Model> call, Response<Model> response) { 
      List<BanItem> LatestItems = response.body().GetMain(); 
      for (int i = 0; i < LatestItems.size(); i++) { 
      } 
     } 

     @Override 
     public void onFailure(Call<Model> call, Throwable t) { 
      t.printStackTrace(); 
     } 


    }); 

линия 91 является линией контура «для», ответ правильный, и он не является нулевым, это просто вызвано включением прогурты, и я уже добавил его в список и не знаю почему он не работает.

Что вызывает это? и как решить эти ошибки без добавления классов в список Proguard, так как есть некоторые классы, которые я не могу показать полный код, и я должен зашифровать его с помощью Proguard.

Заранее спасибо.

+0

Как модель, так и BanItem предназначены для инструкции '-keep'? – njzk2

+0

Все мои модели находятся в «модельном» пакете, и они также находятся в -кв. – Jaeger

+0

Я думаю, код для этих 2 классов может помочь. Убедитесь, что все, что анализируется, должным образом сохранено. – njzk2

ответ

0
-keep class com.abohani.example.utils.** { *; }. 

Попробуйте добавить это в пролога и проверьте. Убедитесь, что все ваши модели находятся под утилитой.

+0

«Все мои модели находятся в« модельном »пакете, и они находятся в« хорошем »также« плюс я не могу установить все классы Util, так как есть некоторые классы, которые я не хочу показывать его код. – Jaeger