NoClassDefFoundError: com.google.firebase.FirebaseOptions

Я продолжаю получать NoClassDefFoundError на другом тестовом устройстве (4.4.2), которое я использую. Но отлично работает на моем тестовом устройстве (Android 5.1).

Я пробовал решения, которые я искал, и ничего не работает.

Я использую базу данных Firebase Realtime. Может ли кто-нибудь помочь?

Вот журнал ошибок:

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

Эта ошибка сообщается с более новыми версиями, главным образом, в редакции 28,29 и ее версией в новых версиях Служебных сервисов, поэтому, если у вас есть эта проблема, убедитесь, что у вас есть обновленная версия службы Google Play в студии Android. Как это было в старых версиях. Чтобы обновить версию Служебных услуг ..

Следуй этим шагам:

  1. Перейти к Android SDK Manager
  2. Перейдите к Дополнительно здесь, как показано на рисунке ниже, обновите его до последней версии и попробуйте запустить проект.

Введите описание изображения здесь

Затем, если вы используете 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 убедитесь, что тег приложения имеет имя MultiDexApplication .

 <application android:name="android.support.multidex.MultiDexApplication" android:allowBackup="true"> 

Заметка

Если у вас есть собственный класс приложения, и вы используете его в своем файле манифеста, вы можете инициализировать multidex в своем классе Application следующим образом,

 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 выше, но любое тестовое устройство с 4.xx (kit 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); } ... } 

Больше критической аварии.

У меня та же проблема, с этим я решил:

https://stackoverflow.com/a/37364044

Вы должны заменить android:name=".app" на android:name="android.support.multidex.MultiDexApplication"