NoClassDefFoundError: com.google.firebase.FirebaseOptions

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

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

Я использую базу данных 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)

Ответ 1

Вот что я решил для меня:

  • Добавьте компиляцию 'com.android.support:multidex:1.0.2' в приложение /build.gradle.

  • Добавьте android: name= "android.support.multidex.MultiDexApplication" в тег приложения в AndroidManifest.xml.

    Если вы используете собственный класс приложений, пропустите AndroidManifest.xml и создайте класс Application, расширяющий MultiDexApplication вместо приложения.

Ответ 2

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

Выполните следующие действия:

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

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

Затем, если вы используете 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">

Примечание

, если у вас есть собственный класс приложений, и вы используете его в своем файле манифеста, вы можете инициализировать 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);
    }

}

Ответ 3

Благодаря TapanHP выше, я быстро это сделал для меня:

Короткий ответ:

У меня был multiDexEnabled= true установлен в моем app/build.gradle файле, и это отлично справилось с Android 5.xx выше, но любое тестовое устройство с 4.xx(kit kat) вызовет критическую ошибку "К сожалению, ваше имя было остановлено".

Отладчик показал:

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

...
} 

Больше критического сбоя.

Ответ 4

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

fooobar.com/info/53403/...

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