Crashlytics Fabric:无法执行任务
Posted
技术标签:
【中文标题】Crashlytics Fabric:无法执行任务【英文标题】:Crashlytics Fabric : Failed to execute task 【发布时间】:2015-11-18 18:47:49 【问题描述】:我遇到了问题,不知道如何解决。
我的项目使用 crashlytics,但它总是崩溃且未发送报告。我有一个超时异常:
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 ComponentInfoconnectivit.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");
【问题讨论】:
发布你的 build.gradle 和你的 Crashitycs 初始化。 你可以在我之前的帖子中找到我的 build.gradle 和我的 crashlititycs 初始化 您是否尝试过在生命周期的不同时间抛出运行时异常?例如 onResume 在你的第一个活动中 是的,我在第一个 Activity 中尝试过 OnCreate、OnResume、OnPause。 【参考方案1】:这个问题在 2019 年仍然让我抓狂,但我想我终于弄明白了,异常是什么原因造成的。
我按照official firebase documentation 中给出的所有设置说明进行操作,但是当我测试我的解决方案时,由于 TimeoutException,我没有收到有关 Firebase Crashlytics 管理员的任何报告。
就我而言,原因是我在主要活动的 onCreate() 或 onResume() 方法中触发了异常。 当我让我的应用程序在第一次启动时无异常运行时,后来我开始没有任何错误地获取报告,所以我认为这很重要,在第一次启动时应用程序不应该在钩子方法。
希望我的经验有所帮助。
【讨论】:
【参考方案2】:我修复了TimeoutException
,将以下内容添加到我的build.gradle
ext.enableCrashlytics = true
或者如果您已经有多个扩展:
ext
...
enableCrashlytics = true
你可以把它放在你的应用程序的build.gradle
。
【讨论】:
我应该在哪里添加它们? 哪个 build.gradle? 将它放入应用程序的 build.gradle 为我修复了它 这并没有解决 Coinverse 应用程序中的问题。这是open-source code 和相关的*** post。 对于 KTS build.gradle - ext.set("enableCrashlytics", true)【参考方案3】:我也遇到了这个问题。我只是通过Android Studio -> File -> Invalidate Caches / Restart -> Invalidate and restart
解决了它
【讨论】:
【参考方案4】:好的。在你的 build.gradle 的应用插件部分之后,放置 ext 解决方案
apply plugin: 'io.fabric'
apply plugin: 'com.google.gms.google-services'
ext
enableCrashlytics = true
android
!然后执行无效缓存并重新启动。
还要确保你有implementation 'com.crashlytics.sdk.android:crashlytics:2.10.1'
【讨论】:
这似乎是这篇文章中的重复答案,因为该解决方案已涵盖here。【参考方案5】:接下来是我的解决方案:
-
删除所有旧的 Fabric 相关代码
将应用完全迁移到 Firebase。我为此使用link
我的观察显示 Crashlytic 会在下次启动应用时发送报告,如果应用每次在
Application::onCreate
方法中崩溃,您可能不会在 Firebase 控制台中看到任何报告。
我如何测试:
Application::onCreate
方法中抛出测试异常
评论了再次投掷和启动应用程序
大约一分钟后,我在 Firebase 控制台中看到了崩溃。
希望对你也有帮助!
【讨论】:
【参考方案6】:对于仍在为此苦苦挣扎的人,我通过直接通过 Settings->Plugins android studio 安装 android studio fabric 插件解决了这个问题,并让插件在 gradle 中编辑我的代码。 你可以在这里看到它:https://www.youtube.com/watch?v=Qvqr6vGzxIs
【讨论】:
【参考方案7】:同样的事情,你按照谷歌文档,它只是不起作用。 5 年前,Crashlytics 曾经非常可靠。看到这个很难过。
【讨论】:
【参考方案8】:就我而言,我在 AndroidManifest.xml 中有一些不再有效的条目。 Java 运行时找不到它们,导致崩溃。
更准确地说,我使用了一个 Facebook 插件,我删除了该插件,但在 AndroiManifest.xml 中留下了一些配置条目。删除它们后,此错误消失了。
在您的情况下,它可能是 AndroidManifest 中的其他内容。
这是可能的原因之一。每个应用程序都不同。
【讨论】:
【参考方案9】:检查您的 AndroidManifest.xml 文件,它包含重复的容器 或者写两次以上就是了。
因为,当我不小心将同一个容器写了两次时,我遇到了这个问题。
【讨论】:
【参考方案10】:根据 Crashlytics 支持指南:
确保我们的 SDK 产品线在所有其他 3rd-party SDK 之后
因此,在所有其他与 sdk 相关的初始化(如果有)之后尝试设置 Fabric.with(this, new Crashlytics());
。
如果那里没有其他 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");
【讨论】:
【参考方案11】:也许您有另一个导致此错误的库。尝试删除它,
比如你可以试试
maven url "https://jitpack.io"
【讨论】:
【参考方案12】:导致应用程序可能在 Fabric 连接到其服务之前崩溃。 解决方案:只需删除您的 throw Exception 代码并执行全新安装。
【讨论】:
以上是关于Crashlytics Fabric:无法执行任务的主要内容,如果未能解决你的问题,请参考以下文章
Crashlytics 更新到 Fabric:无法复制 dSYM
从 Crashlytics 升级到 Fabric 后无法构建我的应用
Crashlytics iOS Beta 卡在 Fabric 应用程序中
Firebase Crashlytics 在没有 Fabric API 密钥的情况下无法工作
无法在 Crashlytics/fabric 中获取崩溃报告。显示错误:“看起来我们缺少 dSYM 来处理以下版本的崩溃。”