ข้อยกเว้น FATAL: Firebase-Messaging-Intent-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"คืออะไร Googling ไม่แสดงผลลัพธ์
ฉันอัปโหลดเวอร์ชันไปยัง Google Play ด้วยminifyEnabledและshrinkResourcesตั้งค่าเป็นทั้งคู่falseแต่ข้อผิดพลาดของ Firebase / Youtube ในรายงานก่อนการเปิดตัวยังคงสับสนอยู่ และมีผลกับอุปกรณ์สองเครื่องเท่านั้น: Nokia 1 และ Huawei P8 青春版
เมื่อฉันอัปโหลดไฟล์ที่ไม่ยุ่งเหยิงไปยัง Google Play ฉันได้รับคำเตือนว่าแอปของฉันมีรหัสที่คลุมเครือและฉันควรอัปโหลดไฟล์แผนที่ ฉันไม่รู้ว่าโค้ด Firebase / Youtube อยู่ในไบนารีของฉันได้อย่างไรและเมื่อพิจารณาถึงการกระทำของฉันไม่มีการอัปเดตไลบรารีใด ๆ เลยในช่วงที่ข้อผิดพลาดเริ่มปรากฏขึ้น
อัพเดท:
มีการเพิ่มปัญหานี้ในรายงานข้อบกพร่องนี้:
https://issuetracker.google.com/issues/160907013
คำตอบ
วิธีแก้ไข: ละเว้น
สัญญาณทั้งหมดชี้ให้เห็นว่านี่เป็นปัญหากับรายงานก่อนการเปิดตัวของ Google Play ไม่ใช่รหัสของเรา
แก้ไข: ผลิตภัณฑ์และทีมวิศวกรของ Google https://issuetracker.google.com/issues/160907013#comment25ของปัญหา แต่ดูเหมือนว่าพวกเขาอาจต้องการคนอีกสองสามคนเพื่อให้พวกเขาเข้าใจถึงขนาดของปัญหา อาจพิจารณาโพสต์ในรายงานข้อบกพร่อง
ฉันยังมีปัญหาเดียวกันเมื่อพยายามเผยแพร่เวอร์ชันใหม่ของแอปพลิเคชันของฉันที่พัฒนาใน java ด้วย android studio ในการเปิดตัวล่วงหน้าข้อผิดพลาดจะปรากฏขึ้นสำหรับอุปกรณ์ Huawei 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
...
แต่ในวิดีโอที่ google ทำการทดสอบแอปพลิเคชันไม่เคยล้มเหลวและคุณจะเห็นได้ชัดเจนว่ามันเริ่มเวลา 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.
ตรวจสอบรีจิสทรีโดยละเอียดหากเป็นกรณีเดียวกันเราสามารถรอให้ Google แก้ไขปัญหาในอุปกรณ์ทดสอบหรือเผยแพร่แอปพลิเคชันเท่านั้นและผู้ใช้บางรายที่มีอุปกรณ์นั้นมีข้อผิดพลาดเดียวกัน
สำหรับฉันสิ่งนี้เกิดขึ้นเนื่องจากฉันลบชั้นเรียน แต่ลืมลบการอ้างอิงถึงชั้นเรียนนั้นใน AndroidManifest.xml
ไปที่ AndroidManifest.xml ของคุณและตรวจสอบให้แน่ใจว่าไม่ได้อ้างอิงคลาสใด ๆ ที่ไม่มีอยู่จริงพวกเขาอาจจะแสดงเป็นสีแดง แต่น่าแปลกใจที่โครงการจะยังคงสร้าง
ชื่อนี้น่าจะแสดงเป็น aewt เนื่องจาก build minification / obfuscation ฉันไม่รู้เลยว่าทำไมข้อความแสดงข้อผิดพลาดถึงอ้างถึง youtube มันก็ทำเพื่อฉันเช่นกันเมื่อฉันไม่ใช้ youtube ในแอพ
บันทึกข้อขัดข้องในรายงานก่อนเผยแพร่นั้นไร้ประโยชน์โดยสิ้นเชิง แต่บันทึกข้อขัดข้องใน firebase crashlytics เปิดเผยที่มาของปัญหา
ฉันยังคงรอรายงานก่อนวางจำหน่ายเพื่อยืนยันอย่างไม่ต้องสงสัยซึ่งฉันจะมีในวันนี้ แต่ดูเหมือนว่าจะเป็นไปได้สูงตามรายงาน firebase crashlytics และสถานการณ์
แก้ไข: รายงานก่อนเผยแพร่ของฉันไม่แสดงข้อผิดพลาดนี้อีกต่อไปและกำลังส่งต่อโดยสิ้นเชิงหลังจากลบการอ้างอิงที่แขวนอยู่ออกจาก androidmanifest.xml
ฉันมีปัญหานี้หลังจากอัปเดตเป็น SDK ล่าสุดของ firebase ปัญหาคือฉันไม่ได้ลบการอ้างอิงของบริการที่ก่อนหน้านี้ถูกลบออกจากแอพ
- ตรวจสอบรายการของคุณและลบการอ้างอิงที่ไม่จำเป็นซึ่งจะแสดงเป็นสีแดง
ด้วยการทำเช่นนั้นฉันสามารถลบข้อผิดพลาดนี้ออกจากรายงานก่อนการเปิดตัวได้