Java.lang.NoClassDefFoundError: com.google.firebase.FirebaseOptions

Я получал эту странную ошибку на моей консоли разработчика Google. Поэтому я использовал Google Cloud Test Lab, чтобы посмотреть, что происходит на самом деле. оказывается, мое приложение не работает почти на всех устройствах

FATAL EXCEPTION: main
 Process: com.blackcurrantapps.iamin, PID: 16706
 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:1591)
    at android.content.ContentProvider.attachInfo(ContentProvider.java:1562)
    at com.google.firebase.provider.FirebaseInitProvider.attachInfo(Unknown Source)
    at android.app.ActivityThread.installProvider(ActivityThread.java:4871)
    at android.app.ActivityThread.installContentProviders(ActivityThread.java:4466)
    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4406)
    at android.app.ActivityThread.access$1500(ActivityThread.java:139)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1270)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:136)
    at android.app.ActivityThread.main(ActivityThread.java:5102)
    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:785)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
    at dalvik.system.NativeStart.main(Native Method)

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

Теперь вот смешная часть, Я даже не использую Firebase в своем приложении вообще. Нет ссылки на слово "Firebase", когда я нахожу путь в своем приложении. Я использую Google облачные сервисы, логин и механизм приложений Google, хотя.

Здесь мой файл build.gradle:

buildscript {
    repositories {
        maven { url 'https://maven.fabric.io/public' }
    }

    dependencies {
        classpath 'io.fabric.tools:gradle:1.+'
    }
}
apply plugin: 'com.android.application'
apply plugin: 'io.fabric'
apply plugin: 'com.google.gms.google-services'

android {
    compileSdkVersion 23
    buildToolsVersion '23.0.2'

    defaultConfig {
        applicationId "com.blackcurrantapps.iamin"
        minSdkVersion 16
        targetSdkVersion 23
        versionCode 11
        versionName "Fixed Check in Bug"
        multiDexEnabled = true
    }
    buildTypes {
        release {
            shrinkResources true
//            minifyEnabled true
//            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    packagingOptions {
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/NOTICE'
    }
    dexOptions {
        javaMaxHeapSize "4g"
    }
}
repositories {
    maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
    maven { url "https://oss.sonatype.org/content/groups/public/" }
    maven { url "https://jitpack.io" }
    maven { url 'https://maven.fabric.io/public' }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])

    compile('com.mikepenz:materialdrawer:[email protected]') {
        transitive = true
    }

    compile 'com.mikepenz:google-material-typeface:[email protected]' //Google Material Design Icons
    compile 'com.mikepenz:fontawesome-typeface:[email protected]'

    compile('com.vincentbrison.openlibraries.android:dualcache:[email protected]') {
        transitive = true;
    }

    compile project(':htmlDialog')
    compile('com.twitter.sdk.android:twitter:[email protected]') {
        transitive = true;
    }
    compile 'com.android.support:palette-v7:23.4.0'
    compile 'com.android.support:multidex:1.0.1'
    compile 'com.android.support:appcompat-v7:23.4.0'
    compile 'com.android.support:design:23.4.0'
    compile 'com.google.android.gms:play-services-maps:9.0.0'
    compile 'com.google.android.gms:play-services-gcm:9.0.0'
    compile 'com.google.android.gms:play-services-identity:9.0.0'
    compile 'com.google.android.gms:play-services-base:9.0.0'
    compile 'com.google.android.gms:play-services-plus:9.0.0'
    compile 'com.google.android.gms:play-services-analytics:9.0.0'
    compile 'com.google.android.gms:play-services-location:9.0.0'
    compile 'com.android.support:cardview-v7:23.4.0'
    compile 'com.rengwuxian.materialedittext:library:2.1.3'
    compile 'com.twotoasters.jazzylistview:library:1.2.1'
    compile 'com.twotoasters.jazzylistview:library-recyclerview:1.2.1'
    compile 'com.pnikosis:materialish-progress:1.7'
    compile 'com.getbase:floatingactionbutton:1.10.1'
    compile 'com.squareup.picasso:picasso:2.5.2'
    compile 'com.squareup.okhttp:okhttp:2.6.0'
    compile 'me.dm7.barcodescanner:zbar:1.8.3'
    compile 'net.glxn.qrgen:android:2.0'
    compile 'com.edmodo:cropper:1.0.1'
    compile 'com.github.PhilJay:MPAndroidChart:v2.1.6'
    compile 'de.greenrobot:eventbus:2.4.0'
    compile 'com.android.support:support-v4:23.4.0'
    compile 'com.pavelsikun:material-seekbar-preference:0.12.1+'

    compile project(path: ':backend', configuration: 'android-endpoints')
}

Может ли кто-нибудь помочь мне здесь?

Ответ 1

Спасибо, что разместили вопрос Sanket. Я - премьер-министр лаборатории испытаний Firebase (ранее Лаборатория облачных испытаний). Хотел сообщить вам, что это ошибка на нашем конце, которая теперь должна быть исправлена.

Кажется, что ваше приложение в настоящее время использует новейшие и самые лучшие сервисы Google Play. Мы обновили наши устройства, чтобы использовать их на прошлой неделе, тогда мы обнаружили ошибку, с которой мы вернулись к более старой версии. В настоящий момент мы повторно развернули новейшие сервисы Play на наших устройствах, чтобы повторять ваши тесты. Если нет, сообщите мне, и мы рассмотрим его и исправим.

Ответ 2

Я нашел решение, которое сработало для меня. Я импортировал всю библиотеку Google Play 9.0.1. Временным решением является импорт только тех API, которые действительно необходимы вашему приложению. Вы можете получить весь список API здесь.

Ответ 3

в моем случае: используйте FCM и карту Google

//for FCM
compile 'com.google.firebase:firebase-messaging:9.4.0'
//for Map
compile 'com.google.android.gms:play-services:9.4.0'

Я исправил: Удалено

compile 'com.google.android.gms:play-services:9.4.0'

и используется

compile 'com.google.android.gms:play-services-maps:9.4.0'
compile 'com.google.android.gms:play-services-location:9.4.0'

Он работал нормально.

Ответ 4

Если это поможет другим, я решил это использовать, хотя это нигде не связано с Firebase, но на самом деле это решило мой сбой

  • Добавить compile 'com.android.support:multidex:1.0.1' в app/build.gradle.

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

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

Ответ 5

Вам необходимо использовать com.google.firebase: firebase-ads: 9.0.2 AdMob в зависимости от Android,

compile 'com.google.firebase:firebase-ads:9.0.2'

и удалите

play-services (com.google.android.gms: play-services:9.0.2)

Это работает для меня!

Ответ 6

Попробуйте выполнить фрагмент кода:

defaultConfig { 
    multiDexEnabled true
}

dependencies {
    compile 'com.android.support:multidex:1.0.0'
}

public class Controller extends Application {

 @Override
    protected void attachBaseContext(Context newBase)
 {
        super.attachBaseContext(newBase);
        MultiDex.install(this);
  } 
}

Ответ 7

Просто снимите зависимость игры play-сервиса google с compile 'com.google.android.gms:play-services:8.3.0', и проблема будет решена.

Ответ 8

Я надеюсь, что это не слишком поздно. Firebase вызывал проблемы, поэтому я исключил это. Я просто добавил это в модуль gradle:

configurations {
    all*.exclude group: 'com.google.firebase', module: 'firebase-common'
}

Ответ 9

Оказывается, мое использование MultiDex было неправильным и вызывает эту ошибку. Это должно было действительно упоминаться в официальной документации где-то.


Как это сделать правильно:

В Gradle.build(уровень приложения)

dependencies {
   compile 'com.android.support:multidex:1.0.1'

В манифесте, добавить

<application
        android:name=".Global"
...

В классе Application

public class Global extends MultiDexApplication {
...
}

Ответ 10

В Android 4.4 спаситель был похож на это (fooobar.com/questions/53403/...):

- У меня есть версия услуг Google Play 33

1) Настроить build.gradle и и зависимости

Включена поддержка multidex и добавлена ​​библиотека multidex

   android {
        compileSdkVersion 23
        buildToolsVersion '23.0.3'
        defaultConfig {
            applicationId "packagename"
            minSdkVersion 14
            targetSdkVersion 23
            versionCode 1
            versionName "1.0"

            //------- Enabling multidex support----------.
            multiDexEnabled true
        }

        dexOptions {
            javaMaxHeapSize "3g"//use 3Gb of ram to launch android 
        }

        buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            }
        }
        productFlavors {
        }
    }


dependencies {

      compile 'com.android.support:multidex:1.0.1' // 1.0.0

      // if you are using google maps
      compile 'com.google.android.gms:play-services-maps:9.2.0'
      compile 'com.google.android.gms:play-services-location:9.2.0'
}

2) Измените манифест и добавьте этот андроид: name

<application
        android:name="android.support.multidex.MultiDexApplication"
        ...
        .....
        activity
             android:name="packagename.Application"
             ....
             ...
       </activity>

3) Класс приложения

-Мой класс приложения:

import android.support.multidex.MultiDex;

public class Application extends AppCompatActivity {


    @Override
    protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);
        MultiDex.install(this);
    }


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        //this is the solution 
        MultiDex.install(this);

        setContentView(R.layout.layout_example);
        ----
        ----

Ответ 11

Не уверен, что это помогает, но у меня была такая же проблема с Android sdk 19, и это сводило меня с ума. Я не использую Firebase (по крайней мере, не целенаправленно) Я не уверен, почему, но ошибка прекратилась, когда я установил "minifyEnabled true" в config gradle.

Я вижу, что вы забыли свой комментарий в разделе выпусков.

Ответ 12

Если вы используете сервисы Google Play, убедитесь, что вы добавили конкретную услугу. Например при использовании карт:

compile 'com.google.android.gms:play-services-maps:x.x.x

вместо

 compile 'com.google.android.gms:play-services:9.6.1'

Это уменьшит размер кода, и компиляция не потребует использования функции "multidex". Если случайно вы уже включили

{
multiDexEnabled true
}

в вашем коде попробуйте удалить его и ненужные ссылки на библиотеки