Android StrictMode pensionListener дает NoClassDefFoundError - PullRequest
0 голосов
/ 20 февраля 2019

Я добавляю 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 Ответ

0 голосов
/ 20 февраля 2019

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...