programing

치명적인 예외: Firebase-Messaging-Intent-Handle --java.lang.NoClassDefFoundError(NoClassDefFound 오류)

sourcetip 2022. 9. 5. 23:34
반응형

치명적인 예외: Firebase-Messaging-Intent-Handle --java.lang.NoClassDefFoundError(NoClassDefFound 오류)

프로젝트에 Firebase나 Youtube 코드/라이브러리를 사용하지 않습니다.그러나 최근 Android Pre-Release Reports에서 다음과 같은 크래시를 볼 수 있습니다.

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"는. 구글 검색 결과 없습니다.

Google Play에 업로드한 버전은 다음과 같습니다.minifyEnabled그리고.shrinkResources둘 다 로 설정하다false다만, 기동전의 리포트의 Firebase/Youtube 에러는 아직 난독화되어 있습니다.또한 다음 두 가지 디바이스에만 영향을 미칩니다.Nokia 1과 Huawei P8입니다.

해독되지 않은 파일을 구글 플레이에 업로드 했을 때 앱에 난독화 코드가 포함되어 있어 지도 파일을 업로드해야 한다는 경고를 받았습니다.Firebase/Youtube 코드가 바이너리에서 어떻게 되어 있는지 알 수 없으며, 커밋을 통해 오류가 나타나기 시작할 때까지 라이브러리에 대한 업데이트는 없었습니다.

업데이트: 다시 수정된 것으로 표시됨:
https://issuetracker.google.com/issues/160907013#comment256

해결책: 무시

모든 징후는 이것이 Google Play의 출시 전 보고서 문제이며 당사의 코드가 아님을 나타냅니다.

편집: Google의 제품 및 엔지니어링 이 이 문제를 인식하고 있습니다.그러나 그들은 문제의 규모를 알기 위해 몇 명의 인력이 더 필요할 것 같다.버그 리포트에 투고하는 것을 검토해 주세요.

업데이트: Google은 프로세스를 위한 필터를 추가하여 수정했습니다.버그 리포트의 코멘트 256을 참조해 주세요.

몇 가지 버전의 앱을 업로드하여 문제가 해결되었습니다.

또한 Android Studio에서 Java로 개발된 새로운 버전의 어플리케이션을 공개하려고 할 때도 같은 문제가 발생했는데, 출시 전 Android 5.0 탑재 Huawei P8 春 device device with device with with with with with with with sd with sd with sd with sd with with sd with with with with with with with with with with with with with with with with with with with with with with with with with with with with with with with with with with with with에러는 다음과 같습니다.

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
...

그러나 구글이 테스트용으로 만든 비디오에서는 어플리케이션이 실패하는 일이 없고, 06:57:07부터 시작되므로 시간이 일치하지 않습니다.

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.

레지스트리를 자세히 체크해 주세요.같은 경우 구글이 테스트 디바이스에서 문제를 수정하거나 응용 프로그램을 게시할 때까지 기다릴 수 있으며 해당 디바이스를 사용하는 일부 사용자도 동일한 오류가 발생할 수 있습니다.

이것은 AndroidManifest.xml에서 클래스를 삭제했지만 참조를 삭제하는 것을 잊어버렸기 때문입니다.

AndroidManifest.xml에서 존재하지 않는 클래스가 참조되지 않았는지 확인합니다.클래스는 빨간색으로 표시되지만 의외로 프로젝트는 계속 구축됩니다.

빌드 최소화/난독화로 인해 이름이 aewt로 표시될 수 있습니다.앱에서 유튜브를 사용하지 않을 때도 왜 유튜브를 참조하는지 알 수 없습니다.

프리 릴리즈 리포트의 크래시 로그는 전혀 쓸모가 없었지만, 파이어 베이스의 크래시 로그는 문제의 원인을 밝혀냈다.

나는 아직 확실한 사전 공개 보고서를 기다리고 있다. 오늘 늦게 발표될 것이다. 하지만 화재 기지의 추락 사고 보고서와 상황을 근거로 볼 때 그럴 가능성이 매우 높은 것 같다.

편집: 프리리스 리포트에 이 에러가 표시되지 않게 되어, Androidmanifest.xml 에서 행잉 레퍼런스를 삭제하면, 완전히 패스 됩니다.

같은 문제가 있었습니다만, 이 문제는 특정의 디바이스(Nokia Nokia 1과 Huawei P8)에서 발생하고 있습니다.이 문제는 Google의 출시 전 테스트 랩에서 발생한 버그입니다.이 문제가 당신에게는 이 독특한 문제라면 무시만 하면 됩니다.이 문제는 3개월 정도 지나면 해결됩니다.구글은 언제 해결할지 모릅니다.

지원되는 디바이스 목록에서 Nokia 1을 삭제하면 도움이 됩니다.

Firebase 라이브러리를 사용하지 않는 많은 사용자에게 문제가 발생하기 때문에 이 문제는 Firebase 라이브러리와 관련이 없다고 생각합니다.이 문제를 이해하려고 며칠을 노력한 후 이 문제는 Google Play 서비스 앱 업데이트 방법(앱 번들)과 관련이 있다고 생각합니다.구글 플레이 서비스에 문제가 있다고 생각되는 이유는 무엇입니까?이 문제는 2020년 11월 1일 경부터 사용자에게 발생하고 있기 때문에 구글 업데이트 구글 플레이 서비스 및 여기서부터 문제가 시작된다고 생각합니다.또 다른 이유가 있습니다.코드의 특정 장소에서 변경을 하고 플레이스토어에 앱을 다시 게시하면 문제가 갑자기 사라지고 다시 게시하면 문제가 나타납니다.이 모든 이유들로 인해, 나는 구글 플레이 서비스에 문제가 있다고 생각한다.

Manifest 파일에서 불필요한 참조를 삭제하면 일시적으로 문제가 해결되지만, 앱을 다시 게시하려고 하면 문제가 다시 발생합니다!

제목과 메시지가 빈 문자열이었기 때문이다.

firebase 최신 SDK로 업데이트한 후 문제가 발생하였습니다.문제는 이전에 앱에서 삭제된 서비스의 참조를 삭제하지 않았다는 것입니다.

  • 매니페스토를 확인하고 빨간색으로 표시되는 불필요한 참조를 삭제하십시오.

그렇게 함으로써 저는 출시 전 보고서에서 이 오류를 제거할 수 있었습니다.

언급URL : https://stackoverflow.com/questions/64706041/fatal-exception-firebase-messaging-intent-handle-java-lang-noclassdeffounder

반응형