Home » Android » java – Fabric/Crashlytics NoClassDefFoundError only on certain devices

java – Fabric/Crashlytics NoClassDefFoundError only on certain devices

Posted by: admin June 15, 2020 Leave a comment

Questions:

I’m seeing a crash in Google Play related to Fabric/Crashlytics. This happened after I updated from normal Crashlytics to the new Fabric Crashlytics. I can only reproduce it on one of my devices (Galaxy S2). All other devices that I have (Nexus 5 and S4) do not have the crash. Here’s the stack trace:

08-19 09:32:26.328    7084-7084/com.tsm.countryjam D/dalvikvm﹕ WAIT_FOR_CONCURRENT_GC blocked 0ms
08-19 09:32:26.653    7084-7088/com.tsm.countryjam D/dalvikvm﹕ GC_CONCURRENT freed 251K, 12% free 9567K/10823K, paused 12ms+2ms, total 70ms
08-19 09:32:26.653    7084-7084/com.tsm.countryjam D/dalvikvm﹕ WAIT_FOR_CONCURRENT_GC blocked 42ms
08-19 09:32:26.653    7084-7100/com.tsm.countryjam D/dalvikvm﹕ WAIT_FOR_CONCURRENT_GC blocked 42ms
08-19 09:32:26.668    7084-7084/com.tsm.countryjam I/dalvikvm﹕ Failed resolving Lcom/crashlytics/android/beta/Beta; interface 9027 'Lio/fabric/sdk/android/services/common/DeviceIdentifierProvider;'
08-19 09:32:26.668    7084-7084/com.tsm.countryjam W/dalvikvm﹕ Link of class 'Lcom/crashlytics/android/beta/Beta;' failed
08-19 09:32:26.668    7084-7084/com.tsm.countryjam E/dalvikvm﹕ Could not find class 'com.crashlytics.android.beta.Beta', referenced from method com.crashlytics.android.Crashlytics.<init>
08-19 09:32:26.668    7084-7084/com.tsm.countryjam W/dalvikvm﹕ VFY: unable to resolve new-instance 1791 (Lcom/crashlytics/android/beta/Beta;) in Lcom/crashlytics/android/Crashlytics;
08-19 09:32:26.668    7084-7084/com.tsm.countryjam D/dalvikvm﹕ VFY: replacing opcode 0x22 at 0x000a
08-19 09:32:26.668    7084-7084/com.tsm.countryjam I/dalvikvm﹕ Failed resolving Lcom/crashlytics/android/beta/Beta; interface 9027 'Lio/fabric/sdk/android/services/common/DeviceIdentifierProvider;'
08-19 09:32:26.668    7084-7084/com.tsm.countryjam W/dalvikvm﹕ Link of class 'Lcom/crashlytics/android/beta/Beta;' failed
08-19 09:32:26.668    7084-7084/com.tsm.countryjam W/dalvikvm﹕ VFY: unable to find class referenced in signature (Lcom/crashlytics/android/beta/Beta;)
08-19 09:32:26.673    7084-7084/com.tsm.countryjam I/dalvikvm﹕ Failed resolving Lcom/crashlytics/android/beta/Beta; interface 9027 'Lio/fabric/sdk/android/services/common/DeviceIdentifierProvider;'
08-19 09:32:26.673    7084-7084/com.tsm.countryjam W/dalvikvm﹕ Link of class 'Lcom/crashlytics/android/beta/Beta;' failed
08-19 09:32:26.673    7084-7084/com.tsm.countryjam W/dalvikvm﹕ VFY: unable to find class referenced in signature (Lcom/crashlytics/android/core/PinningInfoProvider;)
08-19 09:32:26.673    7084-7084/com.tsm.countryjam W/dalvikvm﹕ VFY: unable to find class referenced in signature (Lcom/crashlytics/android/core/PinningInfoProvider;)
08-19 09:32:26.673    7084-7084/com.tsm.countryjam W/dalvikvm﹕ VFY: unable to find class referenced in signature (Lcom/crashlytics/android/core/PinningInfoProvider;)
08-19 09:32:26.678    7084-7084/com.tsm.countryjam W/dalvikvm﹕ VFY: unable to find class referenced in signature (Lcom/crashlytics/android/core/CrashlyticsListener;)
08-19 09:32:26.678    7084-7084/com.tsm.countryjam W/dalvikvm﹕ VFY: unable to find class referenced in signature (Lcom/crashlytics/android/core/CrashlyticsListener;)
08-19 09:32:26.678    7084-7084/com.tsm.countryjam I/dalvikvm﹕ Failed resolving Lcom/crashlytics/android/beta/Beta; interface 9027 'Lio/fabric/sdk/android/services/common/DeviceIdentifierProvider;'
08-19 09:32:26.678    7084-7084/com.tsm.countryjam W/dalvikvm﹕ Link of class 'Lcom/crashlytics/android/beta/Beta;' failed
08-19 09:32:26.678    7084-7084/com.tsm.countryjam D/dalvikvm﹕ DexOpt: unable to opt direct call 0x3474 at 0x0f in Lcom/crashlytics/android/Crashlytics;.<init>
08-19 09:32:26.678    7084-7084/com.tsm.countryjam I/dalvikvm﹕ Failed resolving Lcom/crashlytics/android/answers/SessionEventTransform; interface 9072 'Lio/fabric/sdk/android/services/events/EventTransform;'
08-19 09:32:26.678    7084-7084/com.tsm.countryjam W/dalvikvm﹕ Link of class 'Lcom/crashlytics/android/answers/SessionEventTransform;' failed
08-19 09:32:26.678    7084-7084/com.tsm.countryjam E/dalvikvm﹕ Could not find class 'com.crashlytics.android.answers.SessionEventTransform', referenced from method com.crashlytics.android.answers.Answers.initializeSessionAnalytics
08-19 09:32:26.678    7084-7084/com.tsm.countryjam W/dalvikvm﹕ VFY: unable to resolve new-instance 1784 (Lcom/crashlytics/android/answers/SessionEventTransform;) in Lcom/crashlytics/android/answers/Answers;
08-19 09:32:26.678    7084-7084/com.tsm.countryjam D/dalvikvm﹕ VFY: replacing opcode 0x22 at 0x0004
08-19 09:32:26.678    7084-7084/com.tsm.countryjam I/dalvikvm﹕ Could not find method io.fabric.sdk.android.services.common.CommonUtils.logControlledError, referenced from method com.crashlytics.android.answers.Answers.initializeSessionAnalytics
08-19 09:32:26.678    7084-7084/com.tsm.countryjam W/dalvikvm﹕ VFY: unable to resolve static method 59049: Lio/fabric/sdk/android/services/common/CommonUtils;.logControlledError (Landroid/content/Context;Ljava/lang/String;Ljava/lang/Throwable;)V
08-19 09:32:26.678    7084-7084/com.tsm.countryjam D/dalvikvm﹕ VFY: replacing opcode 0x77 at 0x0194
08-19 09:32:26.678    7084-7084/com.tsm.countryjam I/dalvikvm﹕ Could not find method io.fabric.sdk.android.services.settings.Settings.getInstance, referenced from method com.crashlytics.android.answers.Answers.doInBackground
08-19 09:32:26.678    7084-7084/com.tsm.countryjam W/dalvikvm﹕ VFY: unable to resolve static method 59331: Lio/fabric/sdk/android/services/settings/Settings;.getInstance ()Lio/fabric/sdk/android/services/settings/Settings;
08-19 09:32:26.678    7084-7084/com.tsm.countryjam D/dalvikvm﹕ VFY: replacing opcode 0x71 at 0x000c
08-19 09:32:26.678    7084-7084/com.tsm.countryjam I/dalvikvm﹕ Could not find method io.fabric.sdk.android.services.common.CommonUtils.getStringsFileValue, referenced from method com.crashlytics.android.answers.Answers.getOverridenSpiEndpoint
08-19 09:32:26.678    7084-7084/com.tsm.countryjam W/dalvikvm﹕ VFY: unable to resolve static method 59043: Lio/fabric/sdk/android/services/common/CommonUtils;.getStringsFileValue (Landroid/content/Context;Ljava/lang/String;)Ljava/lang/String;
08-19 09:32:26.678    7084-7084/com.tsm.countryjam D/dalvikvm﹕ VFY: replacing opcode 0x71 at 0x0008
08-19 09:32:26.678    7084-7084/com.tsm.countryjam E/dalvikvm﹕ Could not find class 'io.fabric.sdk.android.services.persistence.FileStoreImpl', referenced from method com.crashlytics.android.answers.Answers.getSdkDirectory
08-19 09:32:26.678    7084-7084/com.tsm.countryjam W/dalvikvm﹕ VFY: unable to resolve new-instance 9090 (Lio/fabric/sdk/android/services/persistence/FileStoreImpl;) in Lcom/crashlytics/android/answers/Answers;
08-19 09:32:26.678    7084-7084/com.tsm.countryjam D/dalvikvm﹕ VFY: replacing opcode 0x22 at 0x0001
08-19 09:32:26.678    7084-7084/com.tsm.countryjam I/dalvikvm﹕ Could not find method io.fabric.sdk.android.services.common.Crash$FatalException.getSessionId, referenced from method com.crashlytics.android.answers.Answers.onException
08-19 09:32:26.678    7084-7084/com.tsm.countryjam W/dalvikvm﹕ VFY: unable to resolve virtual method 59056: Lio/fabric/sdk/android/services/common/Crash$FatalException;.getSessionId ()Ljava/lang/String;
08-19 09:32:26.678    7084-7084/com.tsm.countryjam D/dalvikvm﹕ VFY: replacing opcode 0x6e at 0x000b
08-19 09:32:26.683    7084-7084/com.tsm.countryjam I/dalvikvm﹕ Could not find method io.fabric.sdk.android.services.common.Crash$LoggedException.getSessionId, referenced from method com.crashlytics.android.answers.Answers.onException
08-19 09:32:26.683    7084-7084/com.tsm.countryjam W/dalvikvm﹕ VFY: unable to resolve virtual method 59058: Lio/fabric/sdk/android/services/common/Crash$LoggedException;.getSessionId ()Ljava/lang/String;
08-19 09:32:26.683    7084-7084/com.tsm.countryjam D/dalvikvm﹕ VFY: replacing opcode 0x6e at 0x000b
08-19 09:32:26.683    7084-7084/com.tsm.countryjam I/dalvikvm﹕ Failed resolving Lcom/crashlytics/android/answers/SessionEventTransform; interface 9072 'Lio/fabric/sdk/android/services/events/EventTransform;'
08-19 09:32:26.683    7084-7084/com.tsm.countryjam W/dalvikvm﹕ Link of class 'Lcom/crashlytics/android/answers/SessionEventTransform;' failed
08-19 09:32:26.683    7084-7084/com.tsm.countryjam D/dalvikvm﹕ DexOpt: unable to opt direct call 0x3455 at 0x0c in Lcom/crashlytics/android/answers/Answers;.initializeSessionAnalytics
08-19 09:32:26.683    7084-7084/com.tsm.countryjam D/dalvikvm﹕ DexOpt: unable to opt direct call 0xe6da at 0x19 in Lcom/crashlytics/android/answers/Answers;.initializeSessionAnalytics
08-19 09:32:26.683    7084-7084/com.tsm.countryjam D/dalvikvm﹕ DexOpt: unable to opt direct call 0xe78c at 0x36 in Lcom/crashlytics/android/answers/Answers;.initializeSessionAnalytics
08-19 09:32:26.683    7084-7084/com.tsm.countryjam W/dalvikvm﹕ Unable to resolve superclass of Lcom/crashlytics/android/answers/SessionAnalyticsFilesManager; (9073)
08-19 09:32:26.683    7084-7084/com.tsm.countryjam W/dalvikvm﹕ Link of class 'Lcom/crashlytics/android/answers/SessionAnalyticsFilesManager;' failed
08-19 09:32:26.683    7084-7084/com.tsm.countryjam D/dalvikvm﹕ DexOpt: unable to opt direct call 0x342a at 0x4b in Lcom/crashlytics/android/answers/Answers;.initializeSessionAnalytics
08-19 09:32:26.683    7084-7084/com.tsm.countryjam I/dalvikvm﹕ DexOpt: unable to optimize static field ref 0x5e1e at 0x72 in Lcom/crashlytics/android/answers/Answers;.initializeSessionAnalytics
08-19 09:32:26.683    7084-7084/com.tsm.countryjam I/dalvikvm﹕ DexOpt: unable to optimize static field ref 0x5e1c at 0x7e in Lcom/crashlytics/android/answers/Answers;.initializeSessionAnalytics
08-19 09:32:26.683    7084-7084/com.tsm.countryjam I/dalvikvm﹕ DexOpt: unable to optimize static field ref 0x5e21 at 0x8a in Lcom/crashlytics/android/answers/Answers;.initializeSessionAnalytics
08-19 09:32:26.683    7084-7084/com.tsm.countryjam D/dalvikvm﹕ DexOpt: unable to opt direct call 0xe78f at 0x115 in Lcom/crashlytics/android/answers/Answers;.initializeSessionAnalytics
08-19 09:32:26.683    7084-7084/com.tsm.countryjam D/dalvikvm﹕ DexOpt: unable to opt direct call 0xe78f at 0x17d in Lcom/crashlytics/android/answers/Answers;.initializeSessionAnalytics
08-19 09:32:26.683    7084-7084/com.tsm.countryjam I/dalvikvm﹕ DexOpt: unable to optimize instance field ref 0x5e91 at 0x20 in Lcom/crashlytics/android/answers/Answers;.doInBackground
08-19 09:32:26.683    7084-7084/com.tsm.countryjam I/dalvikvm﹕ DexOpt: unable to optimize instance field ref 0x5e8c at 0x22 in Lcom/crashlytics/android/answers/Answers;.doInBackground
08-19 09:32:26.683    7084-7084/com.tsm.countryjam I/dalvikvm﹕ DexOpt: unable to optimize instance field ref 0x5e8e at 0x2a in Lcom/crashlytics/android/answers/Answers;.doInBackground
08-19 09:32:26.683    7084-7084/com.tsm.countryjam D/dalvikvm﹕ DexOpt: unable to opt direct call 0xe7ac at 0x07 in Lcom/crashlytics/android/answers/Answers;.getSdkDirectory
08-19 09:32:26.683    7084-7084/com.tsm.countryjam D/AndroidRuntime﹕ Shutting down VM
08-19 09:32:26.683    7084-7084/com.tsm.countryjam W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0x4127b2a0)
08-19 09:32:26.683    7084-7084/com.tsm.countryjam E/AndroidRuntime﹕ FATAL EXCEPTION: main
java.lang.NoClassDefFoundError: com.crashlytics.android.beta.Beta
at com.crashlytics.android.Crashlytics.<init>(Crashlytics.java:29)
at com.tsm.events.application.TownsquareEvents.onCreate(TownsquareEvents.java:59)
at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1014)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4251)
at android.app.ActivityThread.access$1400(ActivityThread.java:140)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1297)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4921)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1027)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794)
at dalvik.system.NativeStart.main(Native Method)

And here’s the contents of my build.gradle:

buildscript {
repositories {
jcenter()
maven { url 'https://maven.fabric.io/public' }
}
dependencies {
classpath 'com.android.tools.build:gradle:1.0.+'
classpath 'io.fabric.tools:gradle:1.+'
}
}
apply plugin: 'com.android.application'
apply plugin: 'io.fabric'
repositories {
jcenter()
flatDir {
dirs 'libs'
}
maven { url 'https://maven.fabric.io/public' }
}
android {
compileSdkVersion 22
buildToolsVersion "22.0.1"
defaultConfig {
applicationId "com.tsm.events"
minSdkVersion 15
targetSdkVersion 22
versionCode 1
versionName "1.0.0"
multiDexEnabled = true
}
dexOptions {
javaMaxHeapSize "4g"
}
buildTypes {
debug {
debuggable true
}
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile project(':libraries:ResideMenu')
//compile 'com.android.support:support-v4:20.0.+'
compile 'com.android.support:support-v4:22.0.+'
compile files('libs/universal-image-loader-1.9.3.jar')
compile 'io.realm:realm-android:0.81.1'
compile 'se.emilsjolander:stickylistheaders:2.5.2'
compile 'com.google.android.gms:play-services:6.5.87'
compile 'com.parse.bolts:bolts-android:1.+'
compile fileTree(dir: 'libs', include: 'Parse-*.jar')
compile('com.crashlytics.sdk.android:crashlytics:[email protected]') {
transitive = true
}
// Twitter Kit
compile('com.twitter.sdk.android:twitter:[email protected]') {
transitive = true
}
compile('com.twitter.sdk.android:tweet-composer:[email protected]') {
transitive = true;
}
compile 'com.facebook.android:facebook-android-sdk:3.20.0'
compile 'com.google.maps.android:android-maps-utils:0.3+'
compile(name: 'estimote-sdk-preview', ext: 'aar')
compile files('libs/biweekly-0.4.2.jar')
compile files('libs/jackson-core-2.5.2.jar')
}
How to&Answers:

I just figured it out with a hunch! I recently had to add multi-dex support after upgrading to the new Fabric framework, and I had a feeling that maybe I didn’t do it correctly. So after adding these additional changes, now it no longer crashes:

In my build.gradle, I added an incremental settings:

dexOptions { incremental true javaMaxHeapSize "4g" } 

and an additional dependency:

compile 'com.android.support:multidex:' 

and on my application class I’m extending MultiDexApplication:

public class TownsquareEvents extends android.support.multidex.MultiDexApplication 

Answer:

please build this: compile ‘com.android.support:multidex:1.0.1’

and add this method in your application class :

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

Answer:

If you’re using MultiDex correctly and still running into this error, it may be because you are using Proguard and MultiDex doesn’t know which classes to keep.

So be sure to “sync” your MultiDex keep file with your Proguard .pro file.

Example:

buildTypes { // other stuff... release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' ext.enableCrashlytics = true // // IMPORTANT PART: // // tell your MultiDex to keep the classes you defined in your Proguard .pro file. multiDexKeepProguard file('proguard-rules.pro') } } 

By doing this, you don’t need to manually specify a multidex.keep file!

More info on multiDexKeepProguard here, and the full developer docs from Google.

Answer:

Additional info two years later : It seems that the problem occurs only on devices running Android < 5 (if that helps someone to narrow their search of the crash…)

Answer:

First check Fabric SDK is add or not then after If you got this error check below files.

01-26 12:15:46.186 32094-32094/com.example.android I/SELinux﹕ Function: selinux_android_load_priority [0], There is no sepolicy file. 01-26 12:15:46.186 32094-32094/com.example.android I/SELinux﹕ SELinux: VERIFYSIG File Open Unsuccessful: 01-26 12:15:46.186 32094-32094/com.example.android I/SELinux﹕ Function: selinux_android_load_priority , spota verifySig or checkHash fails. priority version is VE=SEPF_GT-I9500_4.4.2_0018 01-26 12:15:46.186 32094-32094/com.example.android I/SELinux﹕ selinux_android_seapp_context_reload: seapp_contexts file is loaded from /seapp_contexts 01-26 12:15:46.191 32094-32094/com.example.android E/dalvikvm﹕ >>>>> Normal User 01-26 12:15:46.191 32094-32094/com.example.android E/dalvikvm﹕ >>>>> com.example.android [ userId:0 | appId:10288 ] 01-26 12:15:46.191 32094-32094/com.example.android D/dalvikvm﹕ Late-enabling CheckJNI 01-26 12:15:46.261 32094-32094/com.example.android E/dalvikvm﹕ Could not find class 'io.fabric.sdk.android.Kit[]', referenced from method com.example.android.ExampleApplication.onCreate 01-26 12:15:46.261 32094-32094/com.example.android W/dalvikvm﹕ VFY: unable to resolve new-array 10457 ([Lio/fabric/sdk/android/Kit;) in Lcom/example/android/ExampleApplication; 01-26 12:15:46.261 32094-32094/com.example.android D/dalvikvm﹕ VFY: replacing opcode 0x23 at 0x0007 01-26 12:15:46.261 32094-32094/com.example.android W/dalvikvm﹕ Unable to resolve superclass of Lcom/crashlytics/android/Crashlytics; (8949) 01-26 12:15:46.261 32094-32094/com.example.android W/dalvikvm﹕ Link of class 'Lcom/crashlytics/android/Crashlytics;' failed 01-26 12:15:46.261 32094-32094/com.example.android D/dalvikvm﹕ DexOpt: unable to opt direct call 0x3705 at 0x12 in Lcom/example/android/ExampleApplication;.onCreate 01-26 12:15:46.261 32094-32094/com.example.android I/MultiDex﹕ VM with version 1.6.0 does not have multidex support 01-26 12:15:46.261 32094-32094/com.example.android I/MultiDex﹕ install 01-26 12:15:46.261 32094-32094/com.example.android I/MultiDex﹕ MultiDexExtractor.load(/data/app/com.example.android-1.apk, false) 01-26 12:15:46.271 32094-32094/com.example.android I/MultiDex﹕ loading existing secondary dex files 01-26 12:15:46.271 32094-32094/com.example.android I/MultiDex﹕ load found 1 secondary dex files 01-26 12:15:46.276 32094-32094/com.example.android I/MultiDex﹕ install done 01-26 12:15:46.281 32094-32094/com.example.android I/PersonaManager﹕ getPersonaService() name persona_policy 01-26 12:15:46.291 32094-32094/com.example.android D/AndroidRuntime﹕ Shutting down VM 01-26 12:15:46.291 32094-32094/com.example.android W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0x41887c08) 01-26 12:15:46.296 32094-32094/com.example.android E/AndroidRuntime﹕ FATAL EXCEPTION: main Process: com.example.android, PID: 32094 java.lang.NoClassDefFoundError: io.fabric.sdk.android.Kit[] at com.example.android.ExampleApplication.onCreate(ExampleApplication.java:16) at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1025) at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4581) at android.app.ActivityThread.access$1600(ActivityThread.java:161) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1325) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:157) at android.app.ActivityThread.main(ActivityThread.java:5356) 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) 01-26 12:15:52.016 32094-32094/com.example.android I/Process﹕ Sending signal. PID: 32094 SIG: 9 

build.gradle

 buildscript { repositories { maven { url 'https://maven.fabric.io/repo' } } dependencies { classpath 'io.fabric.tools:gradle:1.14.4' } } apply plugin: 'com.android.application' //Put Fabric plugin after Android plugin apply plugin: 'io.fabric' repositories { maven { url 'https://raw.github.com/beshkenadze/dozer/mvn-repo' } maven { url 'https://maven.fabric.io/repo' } } ... dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) ... // Crashlytics Kit compile('com.crashlytics.sdk.android:crashlytics:[email protected]') { transitive = true } } afterEvaluate { tasks.matching { it.name.startsWith('dex') }.each { dx -> if (dx.additionalParameters == null) { dx.additionalParameters = [] } dx.additionalParameters += '--multi-dex' dx.additionalParameters += "--main-dex-list=$projectDir/multidex.keep".toString() } } 

ExampleApplication.java

 package com.example.android; import android.support.multidex.MultiDexApplication; import com.crashlytics.android.Crashlytics; import io.fabric.sdk.android.Fabric; public class ExampleApplication extends MultiDexApplication { private ExampleManager mManager; @Override public void onCreate() { super.onCreate(); Fabric.with(this, new Crashlytics()); mManager = ExampleManager.getInstance(); mManager.init(getApplicationContext()); } } 

multidex.keep

android/support/multidex/BuildConfig.class android/support/multidex/MultiDex$V14.class android/support/multidex/MultiDex$V19.class android/support/multidex/MultiDex$V4.class android/support/multidex/MultiDex.class android/support/multidex/MultiDexApplication.class android/support/multidex/MultiDexExtractor$1.class android/support/multidex/MultiDexExtractor.class android/support/multidex/ZipUtil$CentralDirectory.class android/support/multidex/ZipUtil.class com/example/android/ExampleApplication.class 

progurad-rules.pro

-dontoptimize -dontobfuscate #-optimizationpasses 5 -printusage unused.txt -dontusemixedcaseclassnames -dontskipnonpubliclibraryclasses -dontpreverify -keepattributes SourceFile,LineNumberTable -keepattributes *Annotation* -keepattributes InnerClasses #Project -keep public class com.example.android.** { *; } -dontwarn com.example.android.** -dontwarn com.example.android.db.** -keep public class com.example.android.db.** { *; } # JavascriptInterface Proguard RULES -keepclassmembers class * { @android.webkit.JavascriptInterface <methods>; } -keepattributes JavascriptInterface -keep public class com.example.android.ui.view.EditorView$EditorInterface -keep public class * implements com.example.android.ui.view.EditorView$EditorInterface -keepclassmembers class com.example.android.ui.view.EditorView$EditorInterface { <methods>; } # Libs #-libraryjars libs/AF-Android-SDK-v2.3.1.11.jar #-libraryjars libs/aws-android-sdk-1.7.1.1-core.jar #-libraryjars libs/aws-android-sdk-1.7.1.1-s3.jar #-libraryjars libs/FlurryAnalytics_3.3.3.jar #-libraryjars libs/Parse-1.4.3.jar #-libraryjars libs/google-play-services-STRIPPED.jar #-libraryjars ../bypass-library/libs/bypass.jar # Models -keep class com.example.android.api.data.** { *; } -keep class com.example.android.model.** { *; } # Bypass -keep class in.uncod.android.bypass.** { *; } # Butterknife -dontwarn butterknife.internal.** -keep class **$$ViewInjector { *; } -keepnames class * { @butterknife.InjectView *;} # Parse.com -dontwarn com.parse.FacebookAuthenticationProvider* -dontwarn com.parse.FacebookAuthenticationProvider -dontwarn com.parse.ParseFacebookUtils -dontwarn com.parse.** -keep class com.parse.** { *; } # AWS SDK for Android -keep class org.apache.commons.logging.** { *; } -keep class com.amazonaws.services.sqs.QueueUrlHandler { *; } -keep class com.amazonaws.javax.xml.transform.sax.* { public *; } -keep class com.amazonaws.javax.xml.stream.** { *; } -keep class com.amazonaws.services.**.model.*Exception* { *; } -keep class org.codehaus.** { *; } -keep class com.amazonaws.internal.config.** { *; } -keepattributes Signature,*Annotation* -dontwarn javax.xml.stream.events.** -dontwarn com.fasterxml.jackson.** -dontwarn org.apache.commons.logging.impl.** -dontwarn org.apache.http.conn.scheme.** -dontwarn com.amazonaws.AmazonWebServiceRequest -dontwarn com.amazonaws.ClientConfiguration -dontwarn com.amazonaws.DefaultRequest -dontwarn com.amazonaws.RequestClientOptions -dontwarn com.amazonaws.auth.** -dontwarn com.amazonaws.http.AmazonHttpClient -dontwarn com.amazonaws.http.ExecutionContext -dontwarn com.amazonaws.http.impl.** -dontwarn com.amazonaws.internal.config.HttpClientConfig -dontwarn com.amazonaws.internal.config.InternalConfig -dontwarn com.amazonaws.internal.config.SignerConfig -dontwarn com.amazonaws.metrics.ServiceLatencyProvider -dontwarn com.amazonaws.org.apache.http.** -dontwarn com.amazonaws.retry.RetryPolicy -dontwarn com.amazonaws.util.** -dontwarn com.amazonaws.org.joda.** -dontwarn com.amazonaws.javax.** -dontwarn org.apache.commons.** # Android -keep public class * extends android.app.Activity -keep public class * extends android.webkit.WebView -keep public class * extends android.app.Application -keep public class * extends android.app.Fragment -keep public class * extends android.app.ListActivity -keep public class * extends android.app.Service -keep public class * extends android.content.BroadcastReceiver -keep public class * extends android.content.ContentProvider -keepclasseswithmembers class * { native <methods>; } -keepclasseswithmembers class * { public <init>(android.content.Context, android.util.AttributeSet); } -keepclasseswithmembers class * { public <init>(android.content.Context, android.util.AttributeSet, int); } -keepclassmembers enum * { public static **[] values(); public static ** valueOf(java.lang.String); } -keepclassmembers class * { public void onClickUpdate(android.view.View); } -keep class * implements android.os.Parcelable { public static final android.os.Parcelable$Creator *; } -keep class * extends java.util.ListResourceBundle { protected Object[][] getContents(); } # Google API -keep class com.google.** { *;} -keep interface com.google.** { *;} -dontwarn com.google.** -dontwarn sun.misc.Unsafe -dontwarn com.google.common.collect.MinMaxPriorityQueue -keepattributes *Annotation*,Signature -keep class * extends com.google.api.client.json.GenericJson { *; } -keep class * extends java.util.ListResourceBundle { protected Object[][] getContents(); } -keep public class com.google.android.gms.common.internal.safeparcel.SafeParcelable { public static final *** NULL; } -keepnames @com.google.android.gms.common.annotation.KeepName class * -keepclassmembernames class * { @com.google.android.gms.common.annotation.KeepName *; } -keepnames class * implements android.os.Parcelable { public static final ** CREATOR; } # Squareup -dontwarn com.squareup.okhttp.** # Joda-Time -dontwarn org.joda.time.** # EventBus -keepclassmembers class ** { public void onEvent*(**); } # Annotation -keepattributes *Annotation* # Retrofit -keep class com.google.gson.** { *; } -keep class com.google.inject.** { *; } -keep class org.apache.http.** { *; } -keep class org.apache.james.mime4j.** { *; } -keep class javax.inject.** { *; } -keep class retrofit.** { *; } -keep class com.example.testobfuscation.** { *; } -keepattributes Signature -keep class sun.misc.Unsafe { *; } -dontwarn rx.** # Scribe oAuth -keep class org.scribe.** { *; } -keep class javax.xml.bind.DatatypeConverter -dontwarn javax.xml.bind.DatatypeConverter -dontwarn org.scribe.** #Roundview -dontwarn com.makeramen.** #android.support.v4 -dontwarn android.support.v4.** -keepclasseswithmembers class io.fabric.sdk.android.** { *; } -keep public class * extends io.fabric.sdk.android.Kit.** -keep class * implements io.fabric.sdk.android.KitGroup.** 

Answer:

I’m trying to remedy this bug by updating Crashlytics to 2.9.1. According to https://docs.fabric.io/android/changelog.html#february-28-2018 :

Fixed bug causing Firebase Crashlytics to fail to start when Firebase Core is not explicitly included as a dependency.

My build.gradle now reads:

implementation('com.crashlytics.sdk.android:crashlytics:[email protected]') { transitive = true; } 

EDIT: didn’t help. On Android 4.x Crashlytics crashes. What irony.