我们有一个拥有大量用户的应用程序,并且在一个监控平台上保留了压缩率。最近,NoClassDefError的比率发生得比以前多得多(这种压榨的比例约为0.3%)。
堆栈打印如下:
1Caused by: java.lang.NoClassDefFoundError: com.company.framework.net.NetworkWorker
2 at adz.run(UserCenterDataLoad.java:70)
3 at com.company.framework.app.Application.d(Application.java:45)
4 at atv.run(Unknown Source)
5 at org.greenrobot.eventbus.util.AsyncExecutor$1.run(AsyncExecutor.java:116)
6 at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
7 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
8 at java.lang.Thread.run(Thread.java:833)
main thread
formatted
1 at com.huawei.android.hwcontrol.HwWidgetFactoryImpl.newHwDialogStub(HwWidgetFactoryImpl.java:350)
2 at android.hwcontrol.HwWidgetFactory.getHwDialogStub(HwWidgetFactory.java:209)
3 at android.app.Dialog.<init>(Dialog.java:205)
4 at android.app.Dialog.<init>(Dialog.java:179)
5 at sp.<init>(BaseFullScreenDialog.java:30)
6 at sp.<init>(BaseFullScreenDialog.java:26)
7 at sr.<init>(HomeDialog.java:17)
8 at com.company.home.components.dialogs.HomeUpdateDialog.<init>(HomeUpdateDialog.java:58)
9 at com.company.bll.MainActivity.startHomeDialogAfterSplash(MainActivity.java:987)
10 at com.company.bll.MainActivity.d(MainActivity.java:439)
11 at com.company.bll.MainActivity.b(MainActivity.java:367)
12 at com.company.bll.MainActivity.onCreate(MainActivity.java:266)
13 at android.app.Activity.performCreate(Activity.java:6372)
14 at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1110)
15 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2432)
16 at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2539)
17 at android.app.ActivityThread.access$900(ActivityThread.java:168)
18 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1378)
19 at android.os.Handler.dispatchMessage(Handler.java:102)
20 at android.os.Looper.loop(Looper.java:150)
21 at android.app.ActivityThread.main(ActivityThread.java:5665)
22 at java.lang.reflect.Method.invoke(Native Method)
23 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:822)
24 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:712)
类NetworkWorker在每个地方都被用作网络操作的入口,这种压榨在我们的测试团队中永远不会发生。更重要的是,如果缺少这个课程,用户可能会在每个地方粉碎。
任何人都有这方面的经验吗?这种迷恋难以解决,不仅因为我们无法重现它,而且每当我们改变某些东西来测试它时,我们必须释放它并等待足够的人使用它。