KRYTYCZNY WYJĄTEK: Firebase-Messaging-Intent-Handle - java.lang.NoClassDefFoundError
W moim projekcie nie używam żadnego kodu / bibliotek Firebase ani Youtube. Jednak ostatnio w raportach przedpremierowych na Androida widzę awarie z tym:
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)
Oto kolejny dziennik zawierający więcej szczegółów, ale inne problemy:
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)
...
Jakieś pomysły?
Nie mam pojęcia, co to dkp: libelements.sojest. Googlowanie nie pokazuje żadnych wyników.
Wysłałem wersję do Google Play minifyEnabledi shrinkResourcesustawione na falsejeszcze błędy Firebase / YouTube w pre-launch Raporty są nadal ukrywane. Dotyczy to tylko dwóch urządzeń: Nokii 1 i Huawei P8 青春 版.
Kiedy przesłałem niezasłonięty plik do Google Play, ostrzeżono mnie, że moja aplikacja zawiera zaciemniony kod i że powinienem przesłać plik mapy. Nie mam pojęcia, w jaki sposób kod Firebase / Youtube znajduje się w moim pliku binarnym, a przeglądając moje zatwierdzenia, w czasie, gdy zaczęły się pojawiać błędy, nie było żadnych aktualizacji żadnej z moich bibliotek.
AKTUALIZACJA:
Ten problem został dodany do tego raportu o błędzie:
https://issuetracker.google.com/issues/160907013
Odpowiedzi
Rozwiązanie: ignoruj
Wszystko wskazuje na to, że jest to problem z raportami przed uruchomieniem Google Play, a nie z naszym kodem.
Edycja: zespoły produktów i inżynierów Google https://issuetracker.google.com/issues/160907013#comment25problemu. Wygląda jednak na to, że mogą potrzebować jeszcze kilku osób, aby zorientować się w skali problemu. Może rozważ opublikowanie raportu o błędzie.
Mam też ten sam problem, gdy próbuję opublikować nową wersję mojej aplikacji również opracowanej w java ze studiem android, w fazie przed uruchomieniem pojawia się błąd dla urządzenia Huawei P8 青春 版 z systemem Android 5.0 (SDK 21). Błąd jest następujący:
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)
Ale podczas pobierania pełnego dziennika stwierdzam, że błąd pojawia się przed uruchomieniem aplikacji:
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
...
Ale w filmie, który Google przygotowuje do testu, aplikacja nigdy nie zawodzi i wyraźnie widać, że zaczyna się o 06:57:07, więc czasy się nie zgadzają.
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.
Sprawdź szczegółowo rejestr, jeśli jest to ten sam przypadek, możemy tylko czekać, aż Google naprawi problem na swoich urządzeniach testowych lub opublikuje aplikację i że jakiś użytkownik z tym urządzeniem ma ten sam błąd.
U mnie działo się tak, ponieważ usunąłem klasę, ale zapomniałem usunąć odniesienie do niej w AndroidManifest.xml.
Przejrzyj plik AndroidManifest.xml i upewnij się, że nie odwołuje się do nieistniejących klas, prawdopodobnie będą one wyświetlane na czerwono, ale, co zaskakujące, projekt nadal będzie się kompilował.
Nazwa prawdopodobnie jest wyświetlana jako aewt z powodu minifikacji / zaciemnienia kompilacji. Nie mam absolutnie pojęcia, dlaczego komunikat o błędzie odnosi się do youtube, ja też tak jest, gdy nie używam youtube w aplikacji.
Dziennik awarii w raporcie przedpremierowym był całkowicie bezużyteczny, ale dziennik awarii w Firebase crashlytics ujawnił źródło problemu.
Nadal czekam na raport przedpremierowy, który niewątpliwie potwierdzi, co będę miał później, ale wydaje się wysoce prawdopodobne, biorąc pod uwagę raport o awarii Firebase i okoliczności.
Edycja: mój raport w wersji przedpremierowej nie pokazuje już tego błędu i całkowicie przechodzi po usunięciu zawieszonego odniesienia z pliku androidmanifest.xml
Miałem ten problem po aktualizacji do najnowszego zestawu SDK Firebase. Problem polegał na tym, że nie usunąłem odniesienia do usługi, która została wcześniej usunięta z aplikacji.
- sprawdź swój manifest i usuń niepotrzebne odniesienia, które będą oznaczone kolorem czerwonym.
W ten sposób udało mi się usunąć ten błąd z raportu przed uruchomieniem.