Ответ 1
Я установил TimeoutException
, добавив следующее к моему build.gradle
ext.enableCrashlytics = true
Или если у вас уже есть несколько расширений:
ext {
...
enableCrashlytics = true
}
У меня возникла проблема, и я не знаю, как ее исправить.
Мой проект использует 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:[email protected]') {
transitive = true;
}
}
Инициализация крашлитики:
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");
}
}
Я установил TimeoutException
, добавив следующее к моему build.gradle
ext.enableCrashlytics = true
Или если у вас уже есть несколько расширений:
ext {
...
enableCrashlytics = true
}
Эта проблема сводила меня с ума еще в 2019 году, но я, наконец, понял, что вызвало исключение.
Я следовал всем инструкциям по настройке, приведенным в официальной документации Firebase, но когда я тестировал свое решение, я не получил никакого отчета об администраторе Firebase Crashlytics из-за исключения TimeoutException.
В моем случае причина была в том, что я вызвал исключение в моей основной деятельности с методами onCreate() или onResume(). Когда я позволяю своему приложению при первом запуске просто запускаться без исключения, потом я начинаю получать отчеты без каких-либо ошибок, поэтому я считаю важным, чтобы при первом запуске приложение не выдавало никаких исключений в методы подключения.
Надеюсь, мой опыт помог.
Я тоже получил эту проблему. Я решил это просто, сделав Android Studio -> File -> Invalidate Caches / Restart -> Invalidate and restart
Для тех, кто все еще борется с этим, я решил это, установив плагин для Android-студии прямо через Setup- > Plugins android studio и позвольте плагину редактировать мой код в gradle. Вы можете увидеть это здесь: https://www.youtube.com/watch?v=Qvqr6vGzxIs
Проверьте свой файл AndroidManifest.xml, он содержит дубликат любого поставщика или написано более двух раз, что сижу.
Потому что эта проблема возникла на каком-то конкретном устройстве, до того как я столкнулся с какой-то проблемой, и это мое окончательное решение.
То же самое здесь, вы следите за Google Docs, и это просто не работает. 5 лет назад Crashlytics был чрезвычайно твердым. Грустно видеть это.
Может произойти сбой приложения, прежде чем Fabric сможет подключиться к своему сервису. Решение: просто удалите код исключения и выполните новую установку.
Согласно руководству по поддержке 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");
}
}
Возможно, у вас есть другая библиотека, которая вызывает эту ошибку. Попробуйте удалить его,
например, вы можете попробовать
maven { url "https://jitpack.io" }