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

Estaba obteniendo este extraño error en mi consola de desarrollador de Google. Así que utilicé Google Cloud Test Lab para ver qué está pasando realmente. Resulta que mi aplicación está fallando en casi todos los dispositivos

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) 

Aquí hay una captura de pantalla de la Prueba. enter image description here

Ahora esta es la parte divertida, ni siquiera uso Firebase en mi aplicación . No hay ninguna referencia a la palabra “Firebase” cuando hago una búsqueda en la ruta de mi aplicación completa. Sin embargo, sí uso los servicios de Google Cloud, el inicio de sesión y el motor de la aplicación de Google.

Aquí está mi archivo 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:4.5.8@aar') { transitive = true } compile 'com.mikepenz:google-material-typeface:1.2.0.1@aar' //Google Material Design Icons compile 'com.mikepenz:fontawesome-typeface:4.4.0.1@aar' compile('com.vincentbrison.openlibraries.android:dualcache:2.2.2@jar') { transitive = true; } compile project(':htmlDialog') compile('com.twitter.sdk.android:twitter:1.8.0@aar') { 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') } 

Puede alguien ayudarme aquí ?

Gracias por publicar la pregunta Sanket. Soy el primer ministro en Firebase Test Lab (anteriormente Cloud Test Lab). Quería decirte que esto es un error de nuestro lado que ahora debería solucionarse.

Parece que su aplicación actualmente usa los últimos y mejores servicios de Google Play. Actualizamos nuestros dispositivos para usarlos la semana pasada y luego descubrimos un error que nos hizo volver a una versión anterior. En este momento, volvimos a implementar los últimos servicios de Play en nuestros dispositivos, por lo que volver a ejecutar las pruebas debería funcionar. De lo contrario, házmelo saber y lo investigaremos y solucionaremos.

Encontré una solución que funcionó para mí. Estaba importando toda la biblioteca de los servicios de google play 9.0.1. La solución temporal es importar solo las API que su aplicación realmente necesita. Puede obtener la lista completa de API aquí .

con mi caso: use el mapa de FCM y Google

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

Lo he corregido: eliminado

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

y utilizado

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

Funcionó bien

Si esto puede ayudar a otros, lo solucioné usando esto, aunque esto no está relacionado con Firebase, pero en realidad solucionó mi locking

  1. Agregue compile 'com.android.support:multidex:1.0.1' a app / build.gradle.

  2. Agregue android:name="android.support.multidex.MultiDexApplication" a la etiqueta de la aplicación en AndroidManifest.xml.

  3. Si está utilizando una clase de aplicación personalizada, omita AndroidManifest.xml y haga que su clase de aplicación extienda MultiDexApplication en lugar de la aplicación.

Debe usar com.google.firebase: firebase-ads: 9.0.2 AdMob en dependencias de Android,

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

y elimina tu

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

¡Esto funciona para mi!

Intentarías seguir el fragmento de código:

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

Simplemente restarle importancia a la dependencia de Google play-service para compile 'com.google.android.gms:play-services:8.3.0' y el problema se resolverá.

Espero que no sea demasiado tarde. Firebase estaba causando problemas, así que lo excluí. Acabo de agregar esto en el módulo gradle:

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

Resulta que mi uso de MultiDex era incorrecto y eso causa este error. Esto realmente debería haber sido mencionado en la documentación oficial en alguna parte.


Cómo hacerlo de la manera correcta:

En Gradle.build (nivel de aplicación)

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

En el Manifiesto, agrega

  

En la clase de Aplicación,

 public class Global extends MultiDexApplication { ... } 

En Android 4.4, la solución fue similar a esta ( https://stackoverflow.com/a/38707231/3377472 ):

-Tengo revisión de servicios de Google Play 33

1) Configurar build.gradle y dependencias

Habilitado soporte multidex y agregar biblioteca de 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) Editar Manifiesto y agregar este android: nombre

  

3) Clase de aplicación

-Mi clase de aplicación es:

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

No estoy seguro si esto ayuda pero tuve el mismo problema al usar Android SDK 19 y me estaba volviendo loco. No uso Firebase (al menos no a propósito) No estoy seguro de por qué, pero el error cesó cuando configuré “minifyEnabled true” en la configuración de Gradle.

Veo que tiene el suyo comentario en su sección de lanzamientos .

Si está utilizando servicios de google play, asegúrese de agregar el servicio específico. Por ejemplo, al usar mapas:

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

en lugar de

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

Esto reducirá el tamaño del código y la comstackción no requerirá el uso de la función “multidex”. Si por casualidad ya has incluido

 { multiDexEnabled true } 

en su código intente eliminarlo y referencias innecesarias de la biblioteca