我继续使用NoClassDefFoundError
在我正在使用的其他测试设备(4.4.2)上。但在我的测试设备(Android 5.1)上工作正常。
我尝试了用Google搜索过的解决方案,似乎没有任何效果。
我正在使用Firebase实时数据库。有人可以帮忙吗?
以下是错误日志:
06-03 01:36:29.607 2655-2655/mobapps.mypersonal.biz.grouptracker E/dalvikvm: Could not find class 'com.google.firebase.FirebaseOptions', referenced from method com.google.firebase.FirebaseApp.<init> 06-03 01:36:29.617 2655-2655/mobapps.mypersonal.biz.grouptracker E/dalvikvm: Could not find class 'com.google.firebase.FirebaseApp$zzb', referenced from method com.google.firebase.FirebaseApp.zzaJ 06-03 01:36:29.621 2655-2655/mobapps.mypersonal.biz.grouptracker E/dalvikvm: Could not find class 'com.google.firebase.FirebaseApiNotAvailableException', referenced from method com.google.firebase.FirebaseApp.getToken 06-03 01:36:29.629 2655-2655/mobapps.mypersonal.biz.grouptracker E/dalvikvm: Could not find class 'com.google.firebase.FirebaseApp$zza', referenced from method com.google.firebase.FirebaseApp.zza 06-03 01:36:29.639 2655-2655/mobapps.mypersonal.biz.grouptracker E/AndroidRuntime: FATAL EXCEPTION: main
Process: mobapps.mypersonal.biz.grouptracker, PID: 2655
java.lang.NoClassDefFoundError: com.google.firebase.FirebaseOptions
at com.google.firebase.FirebaseApp.zzbu(Unknown Source)
at com.google.firebase.provider.FirebaseInitProvider.onCreate(Unknown Source)
at android.content.ContentProvider.attachInfo(ContentProvider.java:1656)
at android.content.ContentProvider.attachInfo(ContentProvider.java:1627)
at com.google.firebase.provider.FirebaseInitProvider.attachInfo(Unknown Source)
at android.app.ActivityThread.installProvider(ActivityThread.java:5079)
at android.app.ActivityThread.installContentProviders(ActivityThread.java:4653)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4593)
at android.app.ActivityThread.access$1500(ActivityThread.java:151)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1402)
at android.os.Handler.dispatchMessage(Handler.java:110)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:5363)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:828)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:644)
at dalvik.system.NativeStart.main(Native Method)
答案 0 :(得分:14)
这就解决了我的问题:
将编译'com.android.support:multidex:1.0.2'添加到 应用程序/的build.gradle。
将 android:name =“android.support.multidex.MultiDexApplication”添加到 AndroidManifest.xml 中的应用程序代码中。
如果您使用的是自定义Application类,请跳过 AndroidManifest.xml并使您的Application类扩展 MultiDexApplication 而不是Application。
答案 1 :(得分:2)
此错误报告的版本主要是修订版28,29,并且已在较新的Play服务版本中解决,因此如果您遇到此问题,请确保您的Android工作室中已安装Google Play服务的更新版本。因为旧版本有它。要更新Play服务版本..
请按照以下步骤操作:
如果您在应用程序中使用MultiDex ,那么请确保您已正确完成。
在您 App level Build.Gradle 文件中使用此代码multiDexEnabled true
defaultConfig {
applicationId "com.reversebits.tapanhp.saffer"
minSdkVersion 17
targetSdkVersion 23
versionCode 1
versionName "1.0"
multiDexEnabled true
}
在dependencies
内的同一文件中应用MultiDex依赖。
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.google.android.gms:play-services:9.4.0'
compile 'com.android.support:multidex:1.0.1'
}
然后在 AndroidMenifest.xml 文件中,确保 Application标记的名称为MultiDexApplication 。
<application
android:name="android.support.multidex.MultiDexApplication"
android:allowBackup="true">
如果您有自己的应用类并且在清单文件中使用它,那么您可以在Application类中初始化multidex ,如下所示,
public class AppClass extends Application {
//this will initialize multidex in your own Application class
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
}
答案 2 :(得分:1)
感谢上面的 TapanHP ,我快速为我工作了:
简答:
我在我的multiDexEnabled= true
文件中设置了app/build.gradle
,这在上面的Android 5.xx上运行良好,但任何带有4.xx(套件kat)的测试设备都会抛出一个严重错误“不幸的是,YourAppName已停止。“
调试器显示:
Could not find class 'com.google.firebase.FirebaseOptions' ....
注意:我还有一个扩展Application
的自定义类。
我的解决方案: 将以下代码添加到我的自定义应用程序类
import android.support.multidex.MultiDex;
public class YourCustomApplication extends Application {
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
...
}
没有更严重的崩溃。
答案 3 :(得分:0)
我有同样的问题,我已经解决了这个问题:
您必须将android:name=".app"
替换为android:name="android.support.multidex.MultiDexApplication"