【问题标题】:Crashlytics / Fabric not reporting crashes on AndroidCrashlytics / Fabric 未报告 Android 上的崩溃
【发布时间】:2015-12-23 15:10:02
【问题描述】:

我在使用 Fabric/Crashlytics 时遇到了一些问题。

我使用的是 Android Studio 1.3.2

这是我的 build.gradle

buildscript {
    repositories {
        jcenter()
        maven { url 'https://maven.fabric.io/public' }
    }
    dependencies {
        classpath 'io.fabric.tools:gradle:1.+'
    }
}

apply plugin: 'com.android.application'
apply plugin: 'io.fabric'

repositories {
    jcenter()
    maven { url 'https://maven.fabric.io/public' }
}

android {
...
}

dependencies {
    ...
    compile('com.crashlytics.sdk.android:crashlytics:2.5.2@aar') {
        transitive = true;
    }
}

我在清单中添加了 api 密钥(我添加了元数据 com.crashlytics.ApiKey 以及 io.fabric.ApiKey)。

我正在应用程序类中启动 Fabric

Fabric.with(this, new Crashlytics());

问题是 Beta 正在运行(我可以分享、更新、打开应用程序),Answers 正在运行(列出了会话和所有内容),我什至可以使用

记录异常
Crashlytics.logException("Test");

非致命崩溃将添加到 Fabric 仪表板。

但由于某种原因,没有报告“致命”崩溃并将其发送到 Fabric。有人可以帮帮我吗?可能是什么原因?我做错了什么?

顺便说一句 - 从 Crashlytics 更新到 Fabric 后,这开始发生。我重新安装了插件,删除了应用程序并再次添加它,尝试不使用 Android Studio 插件。

【问题讨论】:

  • 您是否在清单文件中添加了android:name=".Application"
  • 我在清单中有它。不知道确切的时间,但它只是在某个时候开始工作。也许一些更新,或者什么。不管怎样,现在已经很好了。 :)
  • 有时速度很慢。报告仅在几分钟后出现,比如 5 分钟。

标签: android crashlytics twitter-fabric


【解决方案1】:

确保您没有设置默认的未捕获异常处理程序 (Thread.setDefaultUncaughtExceptionHandler)。这就是我遇到的问题。

【讨论】:

  • 这解决了我的问题。我不知道为什么,但是在我们的代码中,我们有这个 Thread.setDefaultUncaughtExceptionHandler 导致了这个问题。谢谢,干杯!!
【解决方案2】:

尝试将其添加到您的应用程序类中:

Fabric.with(this, new Crashlytics());

对于测试崩溃报告使用:

Crashlytics.getInstance().crash();

用于报告非致命事件:

Crashlytics.log("Your log");
Crashlytics.logException(new Throwable("This your not-fatal name"));

【讨论】:

  • Application类中需要添加这个吗?或者,如果我在 Activity 类中添加相同的内容,它甚至会起作用吗?
  • 这行得通。我建议添加到具有 的 Activity
  • 似乎只有当我的应用连接到 android studio 时,Crashlytics 才会报告崩溃。为什么会这样?
  • 同样的问题有什么解决办法
  • 你也应该删除apply plugin: 'io.fabric',因为我得到了Crashlytics found an invalid API key: null.
【解决方案3】:

到目前为止,您需要将 fabric api 更新到最新的 2.9.3 for android 和 在你的主文件中,你需要在最后一个 on create() 方法中添加它

final Fabric fabric = new Fabric.Builder(this)
            .kits(new Crashlytics())
            .debuggable(true)
            .build();
Fabric.with(fabric);

【讨论】:

  • 他们已经删除了新的 Answers() 并默认添加到 fabric.Removed 收集的用于移动应用转化跟踪的标识符。如果您使用 Twitter 的来自 Answers 的移动应用转换跟踪,请不要更新到此版本。我们强烈建议您探索其他移动测量合作伙伴,因为在 2018 年 6 月 30 日之后,Answers 将不再是跟踪合作伙伴。使用其他提供商后,您可以更新 Fabric SDK。
  • 我应该在哪里添加这些行?
  • 你必须在你的主文件中添加这个意味着 MyApplication.java 或者你可以在你使用 twitter 的活动或片段中添加这个(基本上是登录/注册活动)。
【解决方案4】:

我遇到了一个稍微不同的问题。将 Answers 依赖项添加到我的项目后,我的 Crashlytics 突然停止记录崩溃。

 compile('com.crashlytics.sdk.android:crashlytics:2.5.5@aar') {
        transitive = true;
    }
 compile('com.crashlytics.sdk.android:answers:1.3.10@aar') {
        transitive = true;
    }

解决方案只是删除 Answers 依赖项。您不需要它,因为它已经存在于 crashlytics pacakge com.crashlytics.android.answers.* 中。

这可能对某些用户有帮助。

【讨论】:

    【解决方案5】:

    build.gradle 项目:AppName

        buildscript {
        ext.kotlin_version = '1.3.31'
        repositories {
            google()
            jcenter()
            maven { url 'https://maven.fabric.io/public' }
        }
        dependencies {
            classpath 'com.android.tools.build:gradle:3.4.2'
            classpath 'com.google.gms:google-services:4.2.0'
            classpath 'io.fabric.tools:gradle:1.31.0'
            classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        }
    }
    
    
    
    allprojects {
        repositories {
            google()
            jcenter()
            maven { url 'https://maven.google.com/' }
            maven { url 'https://maven.fabric.io/public' }
            maven { url "https://jitpack.io" }
    
        }
    }
    
    task clean(type: Delete) {
        delete rootProject.buildDir
    }
    

    build.gradle 模块:app

            apply plugin: 'io.fabric'
            implementation 'com.crashlytics.sdk.android:crashlytics:2.10.1'
            implementation 'com.crashlytics.sdk.android:answers:1.4.7'
    

    将此添加到 AndroidManifest.xml

           <meta-data
                android:name="io.fabric.ApiKey"
                android:value="MyFabricApiKey" />
            <meta-data 
                android:name="firebase_crashlytics_collection_enabled" 
                android:value="true" />
    

    使用后

                  val core = CrashlyticsCore.Builder().build()
                      Fabric.with(Fabric.Builder(this)
                        .kits(Crashlytics.Builder().core(core).build())
                        .initializationCallback(object: InitializationCallback<Fabric> {
                            override fun success(p0: Fabric?) {
                                LogClass().log("Fabric","$p0")
                            }
                            override fun failure(p0: Exception?) {
                                LogClass().log("Exception","$p0")
                            }
                        })
                        .build()
                    )
                    Fabric.with(this, Answers())
    

    它有效,在 Firebase 和 Fabric 面板中都显示 CRASH。谢谢....

    【讨论】:

      【解决方案6】:
      Crashlytics.getInstance().crash(); // it is deprecated 
      

      现在你可以使用了,

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-04-10
        • 1970-01-01
        • 2019-04-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-03-03
        • 1970-01-01
        相关资源
        最近更新 更多