Search code examples
visual-studioxamarinxamarin.formsxamarin.androidcrashlytics-android

Xamarin.Android.Crashlytics 2.9.4.1 - NoClassDefFoundError on CrashlyticsCore


I'm trying to build an Android release version of a Xamarin.Forms app but the output apk keeps crashing on Crashlytics initialization. It looks like it can't find the com.crashlytics.android.core.CrashlyticsCore class.

The main (and probably only) difference with the debug builds is that Multidex is enabled.

I've already tried to fix the problem adding these two lines:

com/crashlytics/android/Crashlytics.class
com/crashlytics/android/core/CrashlyticsCore.class

To a multidex.keep file with the build action set to MultiDexMainDexList but the result didn't change.

I'm initializing Crashlytics in my MainAcvitity OnCreate method like this:

Fabric.Fabric.With(this, new Crashlytics.Crashlytics());
Crashlytics.Crashlytics.HandleManagedExceptions();

Stack trace:

[MonoDroid] UNHANDLED EXCEPTION:
[MonoDroid] Java.Lang.NoClassDefFoundError: com.crashlytics.android.core.CrashlyticsCore
[MonoDroid]   at Java.Interop.JniEnvironment+InstanceMethods.CallNonvirtualVoidMethod (Java.Interop.JniObjectReference instance, Java.Interop.JniObjectReference type, Java.Interop.JniMethodInfo method, Java.Interop.JniArgumentValue* args) [0x00089] in <34f201f6cca4421387fe7278a4375940>:0 
[MonoDroid]   at Java.Interop.JniPeerMembers+JniInstanceMethods.FinishCreateInstance (System.String constructorSignature, Java.Interop.IJavaPeerable self, Java.Interop.JniArgumentValue* parameters) [0x0004f] in <34f201f6cca4421387fe7278a4375940>:0 
[MonoDroid]   at Crashlytics.Crashlytics..ctor () [0x00054] in <114e650c181c4522b75b2d021c6a77a9>:0 
[MonoDroid]   at FollowFun.Droid.MainActivity.OnCreate (Android.OS.Bundle savedInstanceState) [0x00026] in <6c170c583d7f4be9a657f0283b3a6d04>:0 
[MonoDroid]   at Android.App.Activity.n_OnCreate_Landroid_os_Bundle_ (System.IntPtr jnienv, System.IntPtr native__this, System.IntPtr native_savedInstanceState) [0x00011] in <16a97b0d1e0a45cc9db76f74432e8848>:0 
[MonoDroid]   at (wrapper dynamic-method) System.Object.16(intptr,intptr,intptr)
[MonoDroid]   --- End of managed Java.Lang.NoClassDefFoundError stack trace ---
[MonoDroid] java.lang.NoClassDefFoundError: com.crashlytics.android.core.CrashlyticsCore
[MonoDroid]     at com.crashlytics.android.Crashlytics.<init>(Crashlytics.java:29)
[MonoDroid]     at md509b0a614f9e78774f77a51d8579dfa9f.MainActivity.n_onCreate(Native Method)
[MonoDroid]     at md509b0a614f9e78774f77a51d8579dfa9f.MainActivity.onCreate(MainActivity.java:38)
[MonoDroid]     at android.app.Activity.performCreate(Activity.java:5231)
[MonoDroid]     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
[MonoDroid]     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148)
[MonoDroid]     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
[MonoDroid]     at android.app.ActivityThread.access$800(ActivityThread.java:135)
[MonoDroid]     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
[MonoDroid]     at android.os.Handler.dispatchMessage(Handler.java:102)
[MonoDroid]     at android.os.Looper.loop(Looper.java:136)
[MonoDroid]     at android.app.ActivityThread.main(ActivityThread.java:5001)
[MonoDroid]     at java.lang.reflect.Method.invokeNative(Native Method)
[MonoDroid]     at java.lang.reflect.Method.invoke(Method.java:515)
[MonoDroid]     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
[MonoDroid]     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
[MonoDroid]     at dalvik.system.NativeStart.main(Native Method)
[AndroidRuntime] Shutting down VM
[AndroidRuntime] FATAL EXCEPTION: main
[AndroidRuntime] Process: my.app, PID: 1441
[AndroidRuntime] java.lang.NoClassDefFoundError: com.crashlytics.android.core.CrashlyticsCore
[AndroidRuntime]    at com.crashlytics.android.Crashlytics.<init>(Crashlytics.java:29)
[AndroidRuntime]    at md509b0a614f9e78774f77a51d8579dfa9f.MainActivity.n_onCreate(Native Method)
[AndroidRuntime]    at md509b0a614f9e78774f77a51d8579dfa9f.MainActivity.onCreate(MainActivity.java:38)
[AndroidRuntime]    at android.app.Activity.performCreate(Activity.java:5231)
[AndroidRuntime]    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
[AndroidRuntime]    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148)
[AndroidRuntime]    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
[AndroidRuntime]    at android.app.ActivityThread.access$800(ActivityThread.java:135)
[AndroidRuntime]    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
[AndroidRuntime]    at android.os.Handler.dispatchMessage(Handler.java:102)
[AndroidRuntime]    at android.os.Looper.loop(Looper.java:136)
[AndroidRuntime]    at android.app.ActivityThread.main(ActivityThread.java:5001)
[AndroidRuntime]    at java.lang.reflect.Method.invokeNative(Native Method)
[AndroidRuntime]    at java.lang.reflect.Method.invoke(Method.java:515)
[AndroidRuntime]    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
[AndroidRuntime]    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
[AndroidRuntime]    at dalvik.system.NativeStart.main(Native Method)
[Process] Sending signal. PID: 1441 SIG: 9

Visual Studio for Mac version:

Visual Studio Community 2017 for Mac
Version 7.6.7 (build 49)
Installation UUID: [...]
Runtime:
    Mono 5.12.0.301 (2018-02/4fe3280bba1) (64-bit)
    GTK+ 2.24.23 (Raleigh theme)
    Xamarin.Mac 4.4.1.178 (master / eeaeb7e6)

    Package version: 512000301

Xamarin.Android version:

Xamarin.Android
Version: 9.0.0.20 (Visual Studio Community)
Android SDK: /Applications/Utilities/android-sdk
    Supported Android versions:
        4.0.3 (API level 15)
        4.1   (API level 16)
        4.4   (API level 19)
        5.0   (API level 21)
        5.1   (API level 22)
        6.0   (API level 23)
        7.0   (API level 24)
        7.1   (API level 25)
        8.1   (API level 27)

SDK Tools Version: 26.1.1
SDK Platform Tools Version: 28.0.1
SDK Build Tools Version: 28.0.3

Java SDK: /usr
java version "1.8.0_92"
Java(TM) SE Runtime Environment (build 1.8.0_92-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.92-b14, mixed mode)

I've installed in my project these packages via NuGet: - Xamarin.Android.Crashlytics 2.9.4.1 - Xamarin.Android.Crashlytics.Answers 1.4.2 - Xamarin.Android.Crashlytics.Beta 1.2.9 - Xamarin.Firebase.Core 60.1142.1

I've already tried to build the project both on Mac OS and Windows 10 and the result is the same crash.

I feel like I've tried everything, anyone has any suggestion to help me solve this issue?


Solution

  • Unfortunately it seems to be a problem with the Xamarin.Android.Crashlytics NuGet package dependencies.

    You need to manually add Xamarin.Android.Crashlytics.Core to the project.

    See this GitHub issue.