it-swarm.com.ru

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)

Вот скриншот теста .  enter image description here

Теперь вот забавная часть, я даже не использую Firebase в своем приложении. Там нет ссылки на слово «Firebase», когда я делаю поиск в пути во всем моем приложении. Я использую облачные сервисы Google, вход в систему и Google App Engine, хотя.

Вот мой файл 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')
}

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

32
Sanket Berde

Спасибо за размещение вопроса Sanket. Я являюсь PM в лаборатории тестирования Firebase (ранее Cloud Test Lab). Хотел сообщить, что это ошибка с нашей стороны, которая должна быть исправлена.

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

18
Ahmed Mounir

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

14
Swati Rawat

в моем случае: используйте 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'

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

6
sonnv1368

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

  1. Добавьте compile 'com.Android.support:multidex:1.0.1' в app/build.gradle.

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

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

4
Devavrata

Вы должны использовать 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)

Меня устраивает!

3
MMe

Вы попробуете следующий фрагмент кода:

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);
  } 
}
3
Suresh Sarak

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

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

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

2
Amit Upadhyay

В Android 4.4 решение было похоже на это ( https://stackoverflow.com/a/38707231/3377472 ):

-У меня есть сервисы Google Play версия 33

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

Включена поддержка мультидекса и добавлена ​​библиотека мультидекса 

   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) Отредактируйте Манифест и добавьте этот Android: имя

<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);
        ----
        ----
1
Jorge T

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


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

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

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

В Манифесте Добавить

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

В классе приложения

public class Global extends MultiDexApplication {
...
}
1
Sanket Berde

Если вы используете сервисы 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
}

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

0
Farina Ali

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

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

0
gregrobinz