Android 8-12应用崩溃求助:java.lang.NoClassDefFoundError问题
Android 8-12版本应用崩溃问题求助
我的应用在Android 8到12版本上频繁崩溃,收到Google Play的崩溃报告,核心错误是java.lang.NoClassDefFoundError,找不到com/google/firebase/messaging/FirebaseMessaging类。
崩溃堆栈跟踪
Type java.lang.NoClassDefFoundError Exception java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/firebase/messaging/FirebaseMessaging; at me.pushy.sdk.util.PushyFirebase.register (PushyFirebase.java:12) at me.pushy.sdk.Pushy.register (Pushy.java:213) at me.pushy.sdk.cordova.internal.PushyPlugin.register (PushyPlugin.java:245) at me.pushy.sdk.cordova.internal.PushyPlugin.access$000 (PushyPlugin.java:27) at me.pushy.sdk.cordova.internal.PushyPlugin$1.run (PushyPlugin.java:53) at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1167) at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:641) at java.lang.Thread.run (Thread.java:929) Exception java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/firebase/messaging/FirebaseMessaging; at me.pushy.sdk.util.PushyFirebase.register (PushyFirebase.java:12) at me.pushy.sdk.Pushy.register (Pushy.java:213) at me.pushy.sdk.cordova.internal.PushyPlugin.register (PushyPlugin.java:245) at me.pushy.sdk.cordova.internal.PushyPlugin.access$000 (PushyPlugin.java:27) at me.pushy.sdk.cordova.internal.PushyPlugin$1.run (PushyPlugin.java:53) at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1162) at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:636) at java.lang.Thread.run (Thread.java:784) Caused by java.lang.ClassNotFoundException: at dalvik.system.BaseDexClassLoader.findClass (BaseDexClassLoader.java:93) at java.lang.ClassLoader.loadClass (ClassLoader.java:379) at java.lang.ClassLoader.loadClass (ClassLoader.java:312)
注:以上为多次重复崩溃的核心堆栈信息,错误原因一致。
我已在网上查找相关解决方案,但未找到有效办法。以下是项目build.gradle中的依赖配置:
项目依赖配置
dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') implementation "androidx.appcompat:appcompat:$androidxAppCompatVersion" implementation project(':capacitor-android') testImplementation "junit:junit:$junitVersion" androidTestImplementation "androidx.test.ext:junit:$androidxJunitVersion" androidTestImplementation "androidx.test.espresso:espresso-core:$androidxEspressoCoreVersion" implementation project(':capacitor-cordova-android-plugins') implementation 'com.google.android.gms:play-services-location:18.0.0' def appCenterSdkVersion = '4.3.1' implementation "com.microsoft.appcenter:appcenter-analytics:${appCenterSdkVersion}" }
解决方案建议
1. 添加Firebase Messaging依赖
从堆栈信息可知,Pushy SDK的PushyFirebase类调用FirebaseMessaging时找不到该类,说明项目缺少Firebase Messaging依赖。在build.gradle中添加:
// 版本建议与Google Play服务版本兼容,可根据项目需求调整 implementation 'com.google.firebase:firebase-messaging:23.0.0'
同时确保项目根目录build.gradle已配置Google服务插件:
buildscript { dependencies { classpath 'com.google.gms:google-services:4.3.15' } }
并在app模块build.gradle末尾添加:
apply plugin: 'com.google.gms.google-services'
2. 启用Multidex支持
Android 8+虽默认支持Multidex,但项目方法数过多时仍可能出现类找不到问题。在build.gradle中启用:
android { defaultConfig { multiDexEnabled true } } dependencies { implementation 'androidx.multidex:multidex:2.0.1' }
同时修改Application类继承MultiDexApplication,或在attachBaseContext方法中调用MultiDex.install(this)。
3. 检查Pushy SDK版本兼容性
确认Pushy SDK版本与Firebase Messaging版本兼容,建议升级至最新Pushy SDK版本,避免版本冲突。
4. 清理重建项目
添加依赖后,执行Clean Project和Rebuild Project操作,确保依赖被正确引入。
内容的提问来源于stack exchange,提问作者JayP
相关产品推荐
相关产品推荐

