apikey android android-gradle crashlytics crashlytics-android

android - io fabric apikey



La aplicación se bloquea cuando aplico crashlytics en ella (8)

La aplicación se bloquea cuando aplico crashlytics en ella

FATAL EXCEPTION: main Process: com.ehs.pk, PID: 20963 java.lang.RuntimeException: Unable to get provider com.crashlytics.android.CrashlyticsInitProvider: java.lang.ClassNotFoundException: Didn''t find class "com.crashlytics.android.CrashlyticsInitProvider" on path: DexPathList[[zip file "/data/app/com.ehs.pk-8.apk"],nativeLibraryDirectories=[/data/app-lib/com.ehs.pk-8, /vendor/lib, /system/lib]] at android.app.ActivityThread.installProvider(ActivityThread.java:4993) at android.app.ActivityThread.installContentProviders(ActivityThread.java:4585) at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4499) at android.app.ActivityThread.access$1500(ActivityThread.java:157) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1307) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:157) at android.app.ActivityThread.main(ActivityThread.java:5293) 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:1265) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081) at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.ClassNotFoundException: Didn''t find class "com.crashlytics.android.CrashlyticsInitProvider" on path: DexPathList[[zip file "/data/app/com.ehs.pk-8.apk"],nativeLibraryDirectories=[/data/app-lib/com.ehs.pk-8, /vendor/lib, /system/lib]] at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:67) at java.lang.ClassLoader.loadClass(ClassLoader.java:497) at java.lang.ClassLoader.loadClass(ClassLoader.java:457) at android.app.ActivityThread.installProvider(ActivityThread.java:4978) at android.app.ActivityThread.installContentProviders(ActivityThread.java:4585)  at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4499)  at android.app.ActivityThread.access$1500(ActivityThread.java:157)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1307)  at android.os.Handler.dispatchMessage(Handler.java:102)  at android.os.Looper.loop(Looper.java:157)  at android.app.ActivityThread.main(ActivityThread.java:5293)  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:1265)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081)  at dalvik.system.NativeStart.main(Native Method) 


Al mirar esta parte ...

Didn''t find class ... on path: DexPathList ... dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoade‌​r.java:67)

del seguimiento de la pila, puede descubrir que su dispositivo de prueba es probablemente pre-Lollipop (Android 5.0) y que acaba de alcanzar el límite de 64k. Puedes arreglarlo como se describe aquí.


Cuando minifyEnabled se cumple mientras se usa Firebase o crashlytics, este problema puede ocurrir. Al habilitar minifyEnabled, se contraen los métodos y los nombres de las clases a los caracteres más bajos posibles (cambiando los nombres y eso genera la excepción ClassNotFoundException). Desafortunadamente, las versiones firebase y crashlytics tuvieron muchos problemas con eso. Para resolverlo, simplemente diga a proguard que no reduzca esas clases escribiendo las siguientes líneas en el archivo de proguard "proguard-rules.pro" como:

-keep class com.crashlytics.** { *; } -keep class com.google.firebase.*.* { *; }

Ahora, si el problema no desaparece o no encuentra otras clases como la suya, verifique la versión de dependle y otras de su proyecto base build.gradle dependencias. Encontré que esta versión está libre de ese error:

dependencies { classpath ''com.android.tools.build:gradle:3.0.1'' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files classpath ''com.google.gms:google-services:3.2.0'' classpath ''io.fabric.tools:gradle:1.25.1'' }

Recuerde que puede poner cualquier ruta de clases en ese archivo de programa para que no cambie su nombre o sus métodos cuando está habilitado minify, y eso también lo ayudará con otras clases "ClassNotFoundException".

También para probar esto en la depuración, puede ajustar la configuración de depuración en build.gradle como:

buildTypes { release { debuggable false minifyEnabled true shrinkResources true proguardFiles getDefaultProguardFile(''proguard-android.txt''), ''proguard-rules.pro'' } debug { debuggable true minifyEnabled true shrinkResources true proguardFiles getDefaultProguardFile(''proguard-android.txt''), ''proguard-rules.pro'' } }


Estábamos teniendo el mismo problema, y ​​deshabilitar la ejecución instantánea en Android Studio parecía que funcionaba.

En mac Configuración de Android Studio o Preferencias -> Compilación, Ejecución, Implementación -> Ejecución instantánea.


Estaba enfrentando el mismo problema, está relacionado con el límite de 64k "multidex".

Estaba usando la propiedad multiDexEnabled true en build.gradle en el bloque defaultConfig , en android defaultConfig .

Como se indica en la documentación de Google

para dispositivos con la API de Android anterior a 21 , debemos incluir la biblioteca multidex ( implementation ''com.android.support:multidex:1.0.2'' )

y extender MultiDexApplication en nuestra clase de aplicaciones


Esto podría ser un problema con la ejecución instantánea. Desactive la ejecución instantánea y vuelva a ejecutar la compilación. Me enfrenté al mismo problema y lo resolví.


He resuelto este problema haciendo lo siguiente:

En la clase de aplicación:

@Override public void attachBaseContext(Context base) { super.attachBaseContext(base); try { MultiDex.install(this); } catch (RuntimeException multiDexException) { multiDexException.printStackTrace(); } }


Si esto sucede cuando ejecuta minifyEnabled true , agregue esta regla en su archivo proguard-rules.pro :

-keep public class com.crashlytics.android.CrashlyticsInitProvider


Solo un caso más:

En mi caso, deshabilité la ejecución instantánea, agregué multiDexEnabled true en mi gradle y agregué el ''com.android.support:multidex:1.0.3'' a mis dependencias, llamado MultiDex.install(this); directamente en mi aplicación personalizada, pero sigo teniendo el mismo error. El error solo se produce en el sistema Android 4.4. Todo funciona bien en Android 7.0 y 9.0.

Finalmente, moviendo el MultiDex.install(this); desde el onCreate(Context) hasta el attachBaseContext(Context) resolví mi problema.

Por lo tanto, debe llamar a MultiDex.install(this); en attachBaseContext(Context) lugar de onCreate(Context) cuando no planea extender la aplicación MultiDexApplication directamente.