【问题标题】:Android Firebase crashes doesn't send crash report in third party libs (or *.aar)Android Firebase 崩溃不会在第三方库(或 *.aar)中发送崩溃报告
【发布时间】:2020-09-09 05:32:07
【问题描述】:

我发现我没有收到在附加到项目的第三方库中注册为依赖项或类似 *.aar 的崩溃问题。我的意思是,例如,像这样:

implementation 'xxxx:2.1.1'

我在我的项目中开发了一些库并将其作为依赖项附加到应用程序中。我在这个库中模拟了一些崩溃,但在 Firebase 中没有收到任何崩溃报告。此外,我创建了使用 NDK 的相同库。但我也没有任何崩溃报告。

Firebase 似乎发送了仅在应用中检测到的崩溃,但我们没有从库中发送它。 这不好,因为之前在 Fabric 中,我们得到了它。

我已按照描述here 的说明进行操作 我用过:

dependencies {
    // Recommended: Add the Firebase SDK for Google Analytics.
    implementation 'com.google.firebase:firebase-analytics:17.4.2'

    // Add the Firebase Crashlytics SDK.
    implementation 'com.google.firebase:firebase-crashlytics:17.0.0'
}

有人有同样的情况吗?

【问题讨论】:

    标签: android firebase crashlytics google-fabric


    【解决方案1】:

    Firebaser 在这里 -

    这里发生了几件事。首先,我们期望的工作:

    • 从库中接收 Java 崩溃。如果您在主应用程序进程中正常初始化 Crashlytics,我们希望它能够从您正在拉入的库/AAR 中获取崩溃。一旦编译成 APK,库代码就是应用程序代码,Crashlytics 应该能够报告它。
    • 例如,如果您包含一个数学库,并且 Crashlytics 初始化发生在像 mathlibrary.add(number1, number2) 这样的方法调用之前,则该方法调用应该被捕获和符号化。
    • 在调用库方法之前初始化 Crashlytics 是预期的行为,因为在 Android 中,只要正确配置 Firebase,Crashlytics 应该会在您的应用进程开始时自动启动。如果您正在做任何工作来更改应用程序中的此行为,则可能会导致此问题。我需要更多地了解您实际如何初始化 Crashlytics,因为如果您尝试在库本身中初始化 Crashlytics,或者库代码本身启动服务,这可能会导致报告出现问题。

    什么不起作用:

    • 来自库的 NDK 报告。 AAR 可以包含本机代码和 Java 代码,但 Java 尤其应该被捕获,即使它位于库中。
    • 但是,如果您需要将本机符号文件上传到 Crashlytics 以便从 AAR 中获取合理的堆栈跟踪,Crashlytics 尚不支持此特定路径。

    总体而言,您尝试执行的操作应该使用 Java 代码,为了诊断您的问题,我们需要了解更多关于您如何在应用中设置 Crashlytics 以及如何设置库的信息本身。请随时使用Firebase support 提交支持案例以及所有这些信息。

    【讨论】:

    • 如果我们有库项目的地图文件,Firebase 何时计划支持来自 AAR 的合理堆栈跟踪?
    【解决方案2】:

    我为我的 Android 项目使用了第三方 NDK 库并创建了一个崩溃,但我没有在 firebase 站点上看到任何崩溃报告,但奇怪的是,该站点上出现了 JAVA 崩溃。 我检查了firebase SDK每一步的配置,确认没有错误。我想知道是什么问题,是不是firebase Crashlytics不支持第三方NDK崩溃报告?

    【讨论】:

    • 我也有同样的情况。我写信支持。等待反馈。看起来像一个错误
    【解决方案3】:

    您可能必须启用 NDK 崩溃报告;见Get Android NDK crash reports

    implementation 'com.google.firebase:firebase-crashlytics:17.0.0'
    implementation 'com.google.firebase:firebase-crashlytics-ndk:17.0.0'
    

    【讨论】:

    • 是的,当然。但是,如果您作为依赖项实现的 NDK 库发生崩溃,而应用程序中没有本机库的代码实现,它也不起作用。
    • :uploadCrashlyticsSymbolFileRelease 需要调试符号。
    • 它也没有帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-19
    • 2014-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多