启用Proguard时,使用Reformation2的NullException int java.util.List.



每次我启用Proguard并使用Reform时,我都会遇到这个null异常,为了解决这个问题,我将使用Reform的类添加到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行是"for"循环行,响应是正确的,它根本不是null,这只是由启用proguard引起的,我已经将它添加到列表中,不知道为什么它不起作用。

是什么原因造成的?以及如何在不向Proguard列表中添加类的情况下解决这些错误,因为有些类我无法显示其完整代码,我必须使用Proguard对其进行加密。

提前谢谢。

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

尝试将此添加到proguard并检查。确保你所有的模型都在utils包下。

相关内容

  • 没有找到相关文章

最新更新