¿No encontró la clase “com.google.firebase.provider.FirebaseInitProvider”?

Recibo la siguiente excepción en el lanzamiento de la aplicación.

java.lang.RuntimeException: Unable to get provider com.google.firebase.provider.FirebaseInitProvider: java.lang.ClassNotFoundException: Didn't find class "com.google.firebase.provider.FirebaseInitProvider" on path: DexPathList[[zip file "/data/app/com.vfirst.ifbagro-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.vfirst.ifbagro-1, /vendor/lib, /system/lib]] at android.app.ActivityThread.installProvider(ActivityThread.java:4993) at android.app.ActivityThread.installContentProviders(ActivityThread.java:4596) at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4536) at android.app.ActivityThread.access$1300(ActivityThread.java:149) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1353) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:5214) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:525) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:739) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:555) at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.firebase.provider.FirebaseInitProvider" on path: DexPathList[[zip file "/data/app/com.vfirst.ifbagro-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.vfirst.ifbagro-1, /vendor/lib, /system/lib]] at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:53) at java.lang.ClassLoader.loadClass(ClassLoader.java:501) at java.lang.ClassLoader.loadClass(ClassLoader.java:461) at android.app.ActivityThread.installProvider(ActivityThread.java:4978) at android.app.ActivityThread.installContentProviders(ActivityThread.java:4596) at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4536) at android.app.ActivityThread.access$1300(ActivityThread.java:149) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1353) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:5214) at java.lang.reflect.Method.invokeNative(Native Method) 

Aquí está el nivel de la aplicación build.gradle

 apply plugin: 'com.android.application' apply plugin: 'android-apt' android { compileSdkVersion 24 buildToolsVersion "24.0.1" defaultConfig { applicationId "com.vfirst.ifbagro" minSdkVersion 17 targetSdkVersion 24 versionCode 1 versionName "1.0" multiDexEnabled true } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:24.2.1' compile 'com.android.support:design:24.2.1' compile 'com.android.support:support-v4:24.2.1' compile 'com.google.android.gms:play-services-gcm:9.4.0' compile 'com.google.android.gms:play-services-location:9.4.0' compile 'com.android.support:multidex:1.0.1' compile 'com.google.firebase:firebase-messaging:9.4.0' compile 'com.google.android.gms:play-services:9.4.0' testCompile 'junit:junit:4.12' } apply plugin: 'com.google.gms.google-services' 

Este es mi nivel de aplicación build.gradle

 // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { repositories { jcenter() mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:2.2.0' classpath 'com.google.gms:google-services:3.0.0' classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' classpath 'com.google.gms:google-services:3.0.0' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } allprojects { repositories { jcenter() } } task clean(type: Delete) { delete rootProject.buildDir } 

¿Cómo resolver el problema?

Tuve el mismo error y lo resolví con MultiDex, como se describe en este enlace: https://developer.android.com/studio/build/multidex.html

Yo también enfrenté el mismo problema y finalmente lo resolví al desactivar Instant Run en el estudio de Android.

Configuración → Comstackción, Ejecución, Implementación → Ejecución instantánea y desmarque Habilitar ejecución instantánea

En el archivo build.gradle (Module: app), inserte el siguiente código en defaultConfig:

  defaultConfig { applicationId "com.***.****" minSdkVersion 15 targetSdkVersion 25 versionCode 1 versionName "1.0" multiDexEnabled true } 

e inserte en dependencias:

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

A continuación, agregue código para manifestar:

  

Tuve el mismo problema en mi (proyecto de jugador de YouTube) … y el siguiente resolvió el problema para mí:

  1. Agregue este código en su build.gradle (module: app) dentro de defaultConfing :

     defaultConfig { .... .... multiDexEnabled = true } 
  2. Agregue este código a su build.gradle (module: app) dentro de las dependencies :

     dependencies { compile 'com.android.support:multidex:1.0.1' ..... ..... } 
  3. Abra AndroidManifest.xml y dentro de la application :

      

    o si tiene su clase de aplicación, amplíela desde MultiDexApplication como:

     public class MyApp extends MultiDexApplication { ..... 

Y, por último, creo que deberías descargar el repository de soporte de Android en los extras en SDK Manager .

Simplemente anule el siguiente método en su clase de aplicación.

 public class YourApplication extends Application { @Override protected void attachBaseContext(Context context) { super.attachBaseContext(context); MultiDex.install(this); } @Override public void onCreate() { super.onCreate(); Realm.init(this); //initialize other plugins } } 

Habilitar multidex no es una buena solución porque multidex tiene otro uso en android ver esta respuesta que es multidex

La solución está desactivando la ejecución instantánea como @Shylendra Madda dijo

Configuración → Comstackción, Ejecución, Implementación → Ejecución instantánea y desmarque Habilitar ejecución instantánea

Creo que la razón de este problema es cuando la ejecución instantánea está habilitada, Android Studio no pone bibliotecas como firebase en la aplicación generada para disminuir el tiempo de construcción del proyecto porque la biblioteca de firebase y otras bibliotecas como maps y otras existen en los servicios de juego y juegan servicios está instalado en el dispositivo Android, por lo que si la ejecución instantánea está habilitada, no es necesario ponerlos en la aplicación generada para acelerar el tiempo de comstackción.

Entonces, cuando extraes apk e lo instalas en otro dispositivo verás esta excepción

También me he enfrentado al mismo problema después de probar todas las soluciones. Encontré la siguiente solución.

Si ha aplicado las reglas de proguard, agregue la línea siguiente en las Reglas de ProGuard

 -keep class com.google.firebase.provider.FirebaseInitProvider 

y es resolver mi problema

Si está utilizando MultiDex en su App Gradle, cambie la aplicación extends a extends MultiDexApplication en su clase de aplicación. Definitivamente funcionará

Cuando su aplicación y las bibliotecas a las que hace referencia superan los 65.536 métodos, se encuentra con un error de comstackción que indica que su aplicación ha alcanzado el límite de la architecture de comstackción de Android.

Para evitar esta limitación, debe configurar su aplicación para multidex

Si su minSdkVersion está configurada en 21 o más, todo lo que necesita hacer es establecer multiDexEnabled en verdadero en su archivo build.gradle de nivel de módulo, como se muestra aquí:

 android { defaultConfig { ... minSdkVersion 21 targetSdkVersion 26 multiDexEnabled true } ... } 

Sin embargo, si su minSdkVersion está configurada en 20 o menos, entonces debe usar la biblioteca de soporte multidex de la siguiente manera:

1. Modifique el archivo build.gradle de nivel de módulo para habilitar multidex y agregue la biblioteca multidex como una dependencia, como se muestra aquí:

 android { defaultConfig { ... minSdkVersion 15 targetSdkVersion 26 multiDexEnabled true } ... } dependencies { implementation 'com.android.support:multidex:1.0.3' } 

2. Dependiendo de si reemplaza la clase de la Aplicación, realice una de las siguientes acciones:

  • Si no anula la clase de la Aplicación, edite su archivo de manifiesto para configurar Android: nombre en la etiqueta de la siguiente manera:
    ...   
  • Si reemplaza la clase de la Aplicación, cámbiela para extender la Aplicación MultiDex (si es posible) de la siguiente manera:

la clase pública MyApplication extiende la Aplicación MultiDex {…}

  • O si anula la clase de la aplicación, pero no es posible cambiar la clase base, puede reemplazar el método attachBaseContext () y llamar a MultiDex.install (esto) para habilitar multidex:
 public class MyApplication extends SomeOtherApplication { @Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); MultiDex.install(this); } } 

Primero agregue lo siguiente en build.gradle (Módulo: aplicación) —->

 defaultConfig{ .. multiDexEnabled true .. } 

Luego, en el mismo archivo, agregue lo siguiente

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

Luego, en AndroidManifest.xml escribe lo siguiente

  

Eso es. Definitivamente funcionará

Tuve el mismo problema y lo resolví solo agregue un fragmento de código . Si obtiene este problema, significa que ya ha completado todos los pasos que deben usar Firebase. Solo necesita crear una clase que amplíe la Aplicación ( aplicación de clase pública Application_CrashReport extends) y agregue esta clase en el archivo de mainifest. En esa clase, simplemente anule el siguiente método

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

y agregue MultiDex.install (esto); en ese método significa

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

Nota : – No te olvides de seguir los pasos anteriores

1: Vaya a gradle enable multiDexEnabled y agregue la biblioteca multidex en las dependencias.

 android { ... defaultConfig { multiDexEnabled true ... } } dependencies { // add dependency compile 'com.android.support:multidex:1.0.1' } 

2: vaya al archivo Manifest y escriba android: name = “. MyApplication” (Nombre de clase (MyApplication) es opcional, puede escribir lo que desee).

   . . . . .  

3: Como escribió android: name = “. MyApplication” Aplicación interna en el archivo Manifest. le dará un error porque no creó la clase MyApplication. Create MyApplication Class extiéndalo por clase de “aplicación” o simplemente haga clic en.MyApplication, un pequeño globo rojo aparece en el lado izquierdo de la syntax, haga clic en él, verá (crear la clase MyApplication) en el menú, haga clic en él e incluya debajo Método dentro de esa clase.

  public class MyApplication extends Application { @Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); MultiDex.install(this); } 

Si desea obtener más información, haga clic en este enlace: [ https://developer.android.com/studio/build/multidex.html%5D

Esperemos que funcione para usted.

Esto se debe a MultiDex.

Pasos para resolver:

  1. En gradle-> dependencias -> (compile’com.android.support: multidex: 1.0.1 ‘) Agregue esto en dependencias

  2. En su aplicación, la clase de aplicación extiende MultiDexApplication de esta manera (la clase pública MyApplication extiende MultiDexApplication)

  3. Ejecutar y verificar

Debe extender su clase de aplicación con MultiDexApplication lugar de la Application .

agregar en la ruta raíz del proyecto google-services.json

 dependencies { compile 'com.android.support:support-v4:25.0.1' **compile 'com.google.firebase:firebase-ads:9.0.2'** compile files('libs/StartAppInApp-3.5.0.jar') compile 'com.android.support:multidex:1.0.1' } apply plugin: 'com.google.gms.google-services'