Android StrictMode pensionListener дает NoClassDefFoundError

Я добавляю StrictMode в свое приложение, и оно прекрасно работает, пока я не добавлю пользовательский ViolationListener.

Кажется, он не может найти обратный вызов, который я предоставляю, и также обнаруживает это как ошибку.

Не могли бы вы помочь мне с этим?

Следующий код работает просто замечательно:

StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
                    .detectAll()
                    .penaltyLog()
                    .build());

Следующий код не работает:

StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
                .detectAll()
                .penaltyListener(Executors.newSingleThreadExecutor(), new StrictMode.OnVmViolationListener() {
                    @Override
                    public void onVmViolation(Violation v) {
                        //DO MY CUSTOM STUFF LIKE LOG IT TO CRASHLYTICS
                        Crashlytics.logException(v);
                    }
                })
                .penaltyLog()
                .build());

Это ссылка на logcat (извините за Xs. Они охватывают имя пакета...)

02-20 19:02:43.682 28793-28793/? W/System: ClassLoader referenced unknown path: /data/app/and.XXXXX.XXXXX.ib.qua-1/lib/arm64
02-20 19:02:43.696 28793-28793/? I/art: Rejecting re-init on previously-failed class java.lang.Class<and.XXXXX.XXXXX.ib.app.MyApp$CrashlyticsViolationListener>: java.lang.NoClassDefFoundError: Failed resolution of: Landroid/os/StrictMode$OnVmViolationListener;

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

Кстати: уже сделал чистый / построить / восстановить / отключить мгновенный запуск....

1 ответ

Решение

StrictMode.OnVmViolationListener был добавлен в Android API 28, если ваше устройство или эмулятор имеет более низкую версию, то этот класс не существует, что вызывает ошибку, которую вы видите.

Другие вопросы по тегам