NoClassDefFoundError:com.google.firebase.FirebaseOptions

我一直在使用其他testing设备(4.4.2)上的NoClassDefFoundError 。 但在我的testing设备(Android 5.1)上正常工作。

我尝试了我googlesearch到的解决scheme,似乎没有任何工作。

我正在使用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) 

Solutions Collecting From Web of "NoClassDefFoundError:com.google.firebase.FirebaseOptions"

这是为我解决了这个问题:

  1. 将编译“com.android.support:multidex:1.0.1”添加到app / build.gradle。

  2. Android:name =“android.support.multidex.MultiDexApplication”添加到AndroidManifest.xml中的应用程序标签。

    如果您正在使用自定义应用程序类,请跳过AndroidManifest.xml并使您的Application类扩展MultiDexApplication而不是Application。

这个错误报告的更新版本大部分是修订版28,29,并在较新的Play服务版本中解决,所以如果您遇到此问题,请确保您的Android工作室中已经更新了Google Play服务的版本。 因为旧版本有它。 更新Play服务版本

按着这些次序:

  1. 转到Android SDKpipe理器
  2. 转到Extra,在这里你会发现如下图所示,更新到最新版本,并尝试运行项目。

在这里输入图像说明

然后,如果在您的应用程序中使用MultiDex ,那么请确保您已经正确地完成了它。

在您的应用程序级别的Build.Gradle文件中使用此代码multiDexEnabled true

  defaultConfig { applicationId "com.reversebits.tapanhp.saffer" minSdkVersion 17 targetSdkVersion 23 versionCode 1 versionName "1.0" multiDexEnabled true } 

在相同文件内的依赖关系应用MultiDex依赖 dependencies

 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); } } 

感谢上面的TapanHP ,我很快就为我做了这个工作:

简答:

我有multiDexEnabled= true设置在我的app/build.gradle文件,这在上面的Android 5.xx上运行良好,但任何testing设备与4.xx(套件KAT)将引发严重错误“ 不幸的是,YourAppName已停止。

debugging器显示:

 Could not find class 'com.google.firebase.FirebaseOptions' .... 

注:我也有一个扩展Application的自定义类。

我的解决scheme:将以下代码添加到我的自定义应用程序类

 import android.support.multidex.MultiDex; public class YourCustomApplication extends Application { @Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); MultiDex.install(this); } ... } 

没有更重要的崩溃。

我有同样的问题,我解决了这个问题:

https://stackoverflow.com/a/37364044

您必须将android:name=".app"replace为android:name="android.support.multidex.MultiDexApplication"