致命例外: Firebase-Messaging-Inent- Handle —— java.lang.NoClassDefFoundError

我没有在我的项目中使用任何 Firebase 或 Youtube 代码/库。然而最近,在 Android 预发布报告中,我看到了这样的崩溃:

FATAL EXCEPTION: Firebase-Messaging-Intent-Handle
Process: com.google.android.youtube, PID: 26820
java.lang.NoClassDefFoundError: aewt
at aewu.b(PG:1)
at duc.a(PG:230)
at duc.get(PG:247)
at aevw.b(PG:1)
at dud.al(PG:5)
at dud.aw(PG:4)
at dud.bg(PG:8)
at duc.a(PG:232)
at duc.get(PG:247)
at afke.a(PG:1)
at aeri.b(PG:1)
at dud.fv(PG:4)
at duc.c(PG:269)
at duc.get(PG:247)
at amfk.a(PG:1)
at eiu.K(PG:5)
at dud.fV(PG:7)
at duc.d(PG:334)
at duc.get(PG:247)
at com.google.android.apps.youtube.app.common.notification.FcmMessageListenerService.b(PG:1)
at com.google.firebase.messaging.FirebaseMessagingService.g(PG:53)
at avgp.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at usj.run(PG:2)
at java.lang.Thread.run(Thread.java:831)

下面是另一个日志,它有更多的细节,但是有不同的问题:

Process: com.google.android.youtube, PID: 16751
java.lang.NoClassDefFoundError: aewt
    

[redacted]


at com.google.android.apps.youtube.app.common.notification.FcmMessageListenerService.b(PG:1)
at com.google.firebase.messaging.FirebaseMessagingService.g(PG:53)
at avgp.run(Unknown Source:7)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
at usj.run(PG:2)
at java.lang.Thread.run(Thread.java:764)
Caused by: java.lang.ExceptionInInitializerError
    

[redacted]


at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1119)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5767)
at android.app.ActivityThread.-wrap1(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1680)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6523)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:857)
Caused by: dkp: libelements.so
at dks.c(PG:52)
...

有什么想法吗?

我不知道 dkp: libelements.so是什么,谷歌搜索也没有结果。

我上传了一个版本到谷歌播放与 minifyEnabledshrinkResources都设置为 false,但 Firebase/Youtube 的发布前报告中的错误仍然混淆。而且它只影响两种设备: 诺基亚1和华为 p8青春版。

当我上传未混淆的文件到谷歌播放,我被警告说,我的应用程序包含混淆代码,我应该上传一个地图文件。我不知道 Firebase/Youtube 的代码在我的二进制文件中是什么样的,而且通过查看我的提交,在错误开始显示的时候,我的任何库都没有更新。

更新: 再次标记为固定的:
Https://issuetracker.google.com/issues/160907013#comment256

23417 次浏览

对我来说,发生这种情况是因为我删除了一个类,但是忘记在 AndroidManifest.xml 中删除对它的引用。

检查您的 AndroidManifest.xml 并确保它没有引用任何不存在的类,它们可能会显示为红色,但令人惊讶的是该项目仍然会构建。

由于构建缩小/模糊,名称可能显示为 aewt。我完全不知道为什么错误信息会引用 youtube,当我不在应用程序中使用 youtube 时,它也会引用我。

预发布报告中的崩溃日志完全没用,但是 Firebase Crashlytics 中的崩溃日志揭示了问题的根源。

我还在等一份发布前的报告来确认,我今天晚些时候会拿到的,但基于火灾现场的报告和当时的情况,这很有可能。

编辑: 我的预发布报告不再显示这个错误,而是在从 androidManif.xml 中删除挂起引用之后完全传递

当我试图发布一个新版本的应用程序时,我也遇到了同样的问题,这个应用程序也是在 java 和 Android Studio 一起开发的。在发布之前,华为 p8青春版设备的 Android 5.0(SDk 21)出现了一个错误。错误如下:

FATAL EXCEPTION: Firebase-Messaging-Intent-Handle
Process: com.google.android.youtube, PID: 27648
java.lang.NoClassDefFoundError: aewt
at aewu.b(PG:1)
at duc.a(PG:230)
at duc.get(PG:247)
at aevw.b(PG:1)
at dud.al(PG:5)
at dud.aw(PG:4)
at dud.bg(PG:8)
at duc.a(PG:232)
at duc.get(PG:247)
at afke.a(PG:1)
at aeri.b(PG:1)
at dud.fv(PG:4)
at duc.c(PG:269)
at duc.get(PG:247)
at amfk.a(PG:1)
at eiu.K(PG:5)
at dud.fV(PG:7)
at duc.d(PG:334)
at duc.get(PG:247)
at com.google.android.apps.youtube.app.common.notification.FcmMessageListenerService.b(PG:1)
at com.google.firebase.messaging.FirebaseMessagingService.g(PG:53)
at avgp.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at usj.run(PG:2)
at java.lang.Thread.run(Thread.java:831)

但是当下载完整的日志时,我发现错误出现在应用程序启动之前:

11-08 06:57:29.438: E/AndroidRuntime(27648): FATAL EXCEPTION: Firebase-Messaging-Intent-Handle
11-08 06:57:29.438: E/AndroidRuntime(27648): Process: com.google.android.youtube, PID: 27648
11-08 06:57:29.438: E/AndroidRuntime(27648): java.lang.NoClassDefFoundError: aewt
...


But in the video that google makes for the test the application never fails and you can clearly see that it starts at 06:57:07, so the times don't match.

1-08 06:59:07.758: W/PGApi_client(3556): recv actoionId = 10000, action = com.huawei.pgmng.PGAction@13714f2a actionId =10000 pkg =com.MYAPP.MYAPP extend1 =0 extend2 = flag =3 type =1
11-08 06:59:07.758: W/PGMiddleWare jhh(3556): in handleAction method, action = 10000
11-08 06:59:07.758: W/PGMiddleWare jhh(3556): in handleAction, invoke client = com.huawei.pgmng.middleware.AudioEffectLowPowerImpl@2725ca70, action = com.huawei.pgmng.PGAction@13714f2a actionId =10000 pkg =com.MYAPP.MYAPP extend1 =0 extend2 = flag =3 type =1
11-08 06:59:07.758: I/AudioEffectLowPowerImpl jhh(3556): jhh handle default mActionId = 10000, action = com.huawei.pgmng.PGAction@13714f2a actionId =10000 pkg =com.MYAPP.MYAPP extend1 =0 extend2 = flag =3 type =1
11-08 06:59:07.758: W/AudioEffectLowPowerImpl jhh(3556): enter into DEFAULT_FRONT Scene.

详细检查注册表,如果是同样的情况下,我们只能等待谷歌修复他们的测试设备上的问题或发布应用程序,一些用户与该设备有相同的错误。

我有这个问题后更新到 Firebase 最新的 SDK。问题是,我没有删除之前从应用程序中删除的服务的引用。

  • 检查您的清单,并删除不必要的引用 ,这将显示为红色。

通过这样做,我能够从发射前报告中删除这个错误。

解决方案: 忽略

所有迹象表明,这是一个问题与谷歌播放的启动前报告,而不是我们的代码。

编辑: Google's product and engineering teams 现在知道了 of the issue. But it seems they might need a few more people to give them a sense of the scale of the issue. Perhaps consider posting on the bug report.

更新: 谷歌现在已经修复了这个问题,为此增加了一个过滤器。

我已经上传了几个版本的应用程序,现在问题已经解决了。

我也遇到过同样的问题,这个问题是由特定的设备引起的(诺基亚诺基亚1和华为 P8) ,这个问题是来自谷歌发布前测试实验室的一个 bug,如果这个问题是这样独特的显示给你,你只需要忽略真的,这个问题出现或多或少三个月,谷歌会解决它,我们不只是知道什么时候..。

从支持设备列表中删除 Nokia 1应该会有所帮助

我认为这个问题与 Firebase 库无关,因为这个问题发生在许多不使用 Firebase 库的用户身上,经过几天试图理解这个问题,我认为这个问题与 google play 服务应用程序更新方法(应用程序包)有关。为什么我认为问题是在谷歌播放服务?因为这个问题发生在2020年11月1日左右的用户身上,我认为在这一天,谷歌更新谷歌播放服务,问题从这里开始,还有另一个原因,当我在我的代码的某个地方做一些改变,我在播放商店重新发布应用程序,问题突然消失,当我重新发布它的问题再次出现。基于所有这些原因,我认为问题出在谷歌播放服务上。

从 Manifest 文件中删除不必要的引用可以临时修复问题,但是如果您尝试重新发布您的应用程序,问题将再次出现!

For me it was because the title and message was an empty string.