I've been having an issue and I don't know how to fix it.
My project use crashlytics, but it's always crash and not sent report. I have a TimeoutException:
08-25 03:04:31.876 2856-2856/connectivit.app E/Fabric﹕ Failed to execute task. java.util.concurrent.TimeoutException at java.util.concurrent.FutureTask.get(FutureTask.java:176) at com.crashlytics.android.core.CrashlyticsExecutorServiceWrapper.executeSyncLoggingException(CrashlyticsExecutorServiceWrapper.java:44) at com.crashlytics.android.core.CrashlyticsUncaughtExceptionHandler.uncaughtException(CrashlyticsUncaughtExceptionHandler.java:275) at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:693) at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:690) --------- beginning of crash 08-25 03:04:31.876 2856-2856/connectivit.app E/AndroidRuntime﹕ FATAL EXCEPTION: main Process: connectivit.app, PID: 2856 java.lang.RuntimeException: Unable to start activity ComponentInfo{connectivit.app/connectivit.app.Activity.Main.MainActivity}: java.lang.RuntimeException: This is a crash at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360) at android.app.ActivityThread.access$800(ActivityThread.java:144) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5221) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) Caused by: java.lang.RuntimeException: This is a crash at connectivit.app.Activity.Main.MainActivity.initTabs(MainActivity.java:117) at connectivit.app.Activity.Main.MainActivity.onCreate(MainActivity.java:57) at android.app.Activity.performCreate(Activity.java:5933) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360) at android.app.ActivityThread.access$800(ActivityThread.java:144) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5221) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
EDIT
My build.gradle file :
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' repositories { maven { url "https://jitpack.io" } maven { url 'https://maven.fabric.io/public' } } android { signingConfigs { release { keyAlias 'android.keystore' storeFile file('/Users/jordan/android.keystore.jks') storePassword "" keyPassword "" } config { keyAlias 'androiddebugkey' keyPassword 'android' storeFile file('/Users/jordan/.android/debug.keystore') storePassword 'android' } } compileSdkVersion 23 buildToolsVersion '23' defaultConfig { applicationId “com.test" minSdkVersion 14 targetSdkVersion 23 versionCode 12 versionName '1' // Enabling multidex support. multiDexEnabled true } buildTypes { debug { versionNameSuffix "-DEBUG" } release { minifyEnabled true zipAlignEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' signingConfig signingConfigs.release } } packagingOptions { exclude 'META-INF/ASL2.0' exclude 'META-INF/LICENSE' exclude 'META-INF/NOTICE' } lintOptions { // set to true to turn off analysis progress reporting by lint quiet false // if true, stop the gradle build if errors are found abortOnError false // if true, only report errors ignoreWarnings true } productFlavors { } } dependencies { //--- Android compile 'com.android.support:design:23.0.0' compile 'com.android.support:appcompat-v7:23.0.0' compile 'com.android.support:multidex:1.0.0' //--- Fabric compile('com.crashlytics.sdk.android:crashlytics:2.4.0@aar') { transitive = true; } }
Crashlytics initialization :
public class MyApplication extends MultiDexApplication { @Override public void onCreate() { super.onCreate(); Fabric.with(this, new Crashlytics()); if (!BuildConfig.DEBUG) { Log.d("Ez", "Release mode. Crashlytics enable"); //Fabric.with(this, new Crashlytics()); } else { Log.d("Ez", "Debug mode. Crashlytics disable"); } throw new RuntimeException("This is a crash"); } }
This issue drove me crazy still in 2019, but I think I finally figured out, what did the exception cause.
I followed all the setup instructions given in the official firebase documentation, but when I tested my solution I didn't get any report on Firebase Crashlytics admin, because of the TimeoutException.
The reason was in my case, that I triggered the Exception in my main activity's onCreate() or onResume() methods. When I let my app at the first start just run without exception, then later I started to get the reports without any error, so I think it's important, that at the first start the app shouldn't throw any exception in the hook methods.
Hope my experience helped.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With