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"