Crashlytics Fabric : Failed to execute task

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");
    }
}

Answers


I fixed the TimeoutException by adding the following to my build.gradle

ext.enableCrashlytics = true

Or if you have several extensions already:

ext {
    ...
    enableCrashlytics = true
}

I got this issue as well. I solved it simply by doing Android Studio -> File -> Invalidate Caches / Restart -> Invalidate and restart


For anyone still struggling with this, I solved it by installing android studio fabric plugin directly via Settings->Plugins android studio and let the plugin edit my code in gradle. You can see it done here : https://www.youtube.com/watch?v=Qvqr6vGzxIs


Check Your AndroidManifest.xml file, it contain any provider duplicate or written more than two time that sit.

Because, This issue is occurred some device specific, before some time I Faced some issue and this is my final solution.


Cause the app may crash before Fabric can connect to its service. Solution: just remove your throw Exception code and perform a fresh install.


According to Crashlytics support guide :

Make sure our SDK line is after all other 3rd-party SDKs

So try to set Fabric.with(this, new Crashlytics()); after all of your other sdk related initialization if any. If no other sdk initialization there then try to set it after your BuildConfig initialization.

public class MyApplication extends MultiDexApplication {

@Override
public void onCreate() {
   super.onCreate();  

    if (!BuildConfig.DEBUG) {
        Log.d("Ez", "Release mode. Crashlytics enable");
       //Fabric.with(this, new Crashlytics());
    } else {
        Log.d("Ez", "Debug mode. Crashlytics disable");
    }
   Fabric.with(this, new Crashlytics());

   throw new RuntimeException("This is a crash");
  }
}

Maybe you've another library that cause this error. Try to remove it,

for example you can try

maven { url "https://jitpack.io" }

Need Your Help

What would Clojure lose by switching away from leading parenthesis like Dylan, Julia and Seph?

clojure lisp julia language-design dylan

Three lispy homoiconic languages, Dylan, Julia and Seph all moved away from leading parenthesis - so a hypothetical function call in Common Lisp that would look like:

Is it possible to check if the user has a camera and microphone and if the permissions have been granted with Javascript?

javascript html5 html5-video webrtc html5-audio

I would like to find out if the user's device has an attached camera and microphone, and if so, has permissions been granted to get the audio and video stream using Javascript. I want to make this ...