Android的StrictMode penaltyListener会导致NoClassDefFoundError错误

5

我正在将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参考文档(抱歉,X代表了包名…)
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个回答

8

哇,太棒了!谢谢你提醒我,因为 Android Studio 没有限制 API 的使用,所以我甚至没有检查过。我会尝试并回来分享结果的。 - Camarero

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接