android - Android 的 StrictMode 惩罚监听器给出 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;
提前致谢!
顺便说一句:已经做了一个干净/构建/重建/禁用的即时运行....
解决方案
StrictMode.OnVmViolationListener
在 Android API 28 中添加,如果您的设备或模拟器版本较低,则该类不存在,导致您看到的错误。
推荐阅读
- for-loop - 循环语法的 mariadb 过程
- sockets - TCP接收队列和发送队列有限制吗?
- python - 用 matplotlib 和 numpy 将两个图相交
- visual-studio-code - 如何在 VSCode 中启用 C 语法高亮
- html - 我可以在博客中离线使用 css 而不是外部样式表吗
- flutter - Flutter:首次打开应用时提示用户输入地址详细信息
- jquery - 如何为将使用 jQuery 创建的表单字段提供初始值?
- iccube - IcCube 甘特图:如何正确设置 MDX 部分以进行报告?
- r - 突出显示 ggplot 堆积条形图中的一个因素
- java - 如何在 Junit 测试中覆盖 IF 语句