Crashlytics Fabric: не удалось выполнить задачу

У меня возникла проблема, и я не знаю, как ее исправить.

В моем проекте используется crashlytics, но он всегда вылетает и не отправляет отчет. У меня есть исключение 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)

ИЗМЕНИТЬ

Мой файл build.gradle:

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:

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

person keytronic    schedule 25.08.2015    source источник
comment
опубликуйте свой build.gradle и инициализацию Crashlitycs.   -  person Gabriele Mariotti    schedule 29.08.2015
comment
Вы можете найти мой build.gradle и мою инициализацию crashlitycs в моем предыдущем посте   -  person keytronic    schedule 31.08.2015
comment
Вы пробовали генерировать исключение времени выполнения в другой момент жизненного цикла? например onResume в вашем первом действии   -  person dumazy    schedule 31.08.2015
comment
Да, я пробовал OnCreate, OnResume, OnPause в своем первом действии.   -  person keytronic    schedule 31.08.2015


Ответы (12)


Я исправил TimeoutException, добавив следующее в свой build.gradle

ext.enableCrashlytics = true

Или, если у вас уже есть несколько расширений:

ext {
    ...
    enableCrashlytics = true
}

Вы можете поместить его в build.gradle вашего приложения.

person Fadils    schedule 12.09.2017
comment
где мне их добавить? - person c-an; 04.10.2019
comment
какой build.gradle? - person Monica Aspiras Labbao; 23.10.2019
comment
Поместив его в build.gradle приложения, я исправил его - person dkarv; 19.12.2019
comment
Это не решило проблему в приложении Coinverse. Вот код с открытым исходным кодом и связанный сообщение StackOverflow. - person Adam Hurwitz; 14.04.2020
comment
Для KTS build.gradle - ext.set (enableCrashlytics, true) - person Daniel; 20.04.2020

Эта проблема сводила меня с ума еще в 2019 году, но я думаю, что наконец понял, что вызвало исключение.

Я выполнил все инструкции по настройке, приведенные в официальная документация по firebase, но когда я тестировал свое решение, я не получил отчета об администраторе Firebase Crashlytics из-за TimeoutException.

В моем случае причина заключалась в том, что я вызвал исключение в методах onCreate () или onResume () моего основного действия. Когда я позволяю своему приложению запускаться при первом запуске без исключения, то позже я начал получать отчеты без каких-либо ошибок, поэтому я считаю важным, чтобы при первом запуске приложение не создавало никаких исключений в методы перехвата.

Надеюсь, мой опыт помог.

person Zsolt N. Szabo    schedule 04.09.2019

У меня тоже есть эта проблема. Я решил это просто, выполнив Android Studio -> File -> Invalidate Caches / Restart -> Invalidate and restart

person Hylke    schedule 29.08.2018

Хорошо. Сразу после применения раздела плагинов вашего build.gradle поместите решение ext

apply plugin: 'io.fabric'
apply plugin: 'com.google.gms.google-services'

ext {
    enableCrashlytics = true
}

android { }

! Затем сделайте Invalidate cache и перезапустите. Также убедитесь, что у вас есть implementation 'com.crashlytics.sdk.android:crashlytics:2.10.1'

person Andrew F    schedule 24.01.2020
comment
Кажется, это дублированный ответ в этом сообщении, поскольку это решение описано здесь. - person Adam Hurwitz; 14.04.2020

Мое решение следующее:

  1. Удалите весь старый код, связанный с Fabric
  2. Перенести полностью приложение на Firebase. Для этого я использую ссылку
  3. Мое наблюдение показывает, что Crashlytic отправляет отчет при следующем запуске приложения, и в случае, если приложение вылетает каждый раз в Application::onCreate методе, вы, вероятно, не увидите никаких отчетов в консоли Firebase.

Как я это проверяю:

  1. Выброшено тестовое исключение в Application::onCreate методе
  2. Прокомментировал это бросание и запуск приложения снова
  3. Примерно через минуту я увидел сбой в консоли Firebase.

Надеюсь, это также поможет вам!

person Dmytro Batyuk    schedule 04.03.2020

Для тех, кто все еще борется с этим, я решил это, установив плагин Android Studio Fabric напрямую через Настройки-> Плагины Android Studio и позволив плагину редактировать мой код в градиенте. Вы можете увидеть это здесь: https://www.youtube.com/watch?v=Qvqr6vGzxIs

person Harshil Pansare    schedule 15.06.2017

Проверьте свой файл AndroidManifest.xml, он содержит дубликаты любого поставщика или записанные более двух раз.

Потому что эта проблема возникает на каком-то устройстве, прежде чем я столкнулся с какой-то проблемой, и это мое окончательное решение.

person Prince Dholakiya    schedule 27.09.2018

То же самое и здесь, вы следите за документами Google, и это просто не работает. 5 лет назад Crashlytics был очень солидным. Печально это видеть.

person Thierry    schedule 02.10.2019

В моем случае у меня были некоторые записи в AndroidManifest.xml, которые больше не действовали. Среда выполнения Java не смогла их найти, что привело к сбою.

Чтобы быть более точным, я использовал плагин Facebook, который я удалил, но оставил некоторые записи конфигурации в AndroiManifest.xml. После того, как я их удалил, эта ошибка исчезла.

В вашем случае это может быть что-то еще в файле AndroidManifest.

Это одна из возможных причин. Каждое приложение отличается.

person abelabbesnabi    schedule 29.04.2020

Согласно руководству по поддержке Crashlytics:

Убедитесь, что наша линия SDK соответствует всем остальным сторонним SDK.

Поэтому попробуйте установить Fabric.with(this, new Crashlytics()); после всех других инициализаций, связанных с sdk, если таковые имеются. Если нет другой инициализации sdk, попробуйте установить ее после инициализации BuildConfig.

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");
  }
}
person Ved    schedule 04.12.2015

Возможно, у вас есть другая библиотека, которая вызывает эту ошибку. Попробуй убрать,

например вы можете попробовать

maven { url "https://jitpack.io" }
person Paolo Loconsole    schedule 18.11.2016

Причина в том, что приложение может аварийно завершить работу до того, как Fabric сможет подключиться к своей службе. Решение: просто удалите код исключения throw и выполните новую установку.

person Phuc Vuong    schedule 30.08.2018