Crashlytics 未上传映射文件

Crashlytics not uploading mapping file

我能够在 Crashlytics 中看到发布版本的崩溃,但它们仍然很模糊。我正在使用:

implementation "com.google.firebase:firebase-core:16.0.5"
implementation "com.google.android.gms:play-services-base:16.0.1"
implementation "com.crashlytics.sdk.android:crashlytics:2.9.6"

和(项目级别)

    classpath 'com.android.tools.build:gradle:3.2.1'
    classpath 'com.google.gms:google-services:4.2.0'
    classpath 'io.fabric.tools:gradle:1.26.1' // Crashlytics plugin
    classpath "net.ltgt.gradle:gradle-apt-plugin:0.15"

我已按照 https://firebase.google.com/docs/crashlytics/get-deobfuscated-report 中的说明进行操作,特别是我已从 config.txt

中删除了 -printmapping <path>/mapping.txt

当我查看 Crashlytics 日志时,我没有看到映射文件的上传。

当我 运行 我的项目的早期版本的发布版本使用:

implementation "com.google.firebase:firebase-core:11.8.0"
implementation "com.google.android.gms:play-services-base:11.8.0"
implementation('com.crashlytics.sdk.android:crashlytics:2.8.0@aar') {
    transitive = true
}

和(项目级别)

    classpath 'com.android.tools.build:gradle:3.1.3'
    classpath 'com.google.gms:google-services:3.0.0'
    classpath 'io.fabric.tools:gradle:1.24.4'

然后我在 crashlytics.log 中看到未混淆的堆栈跟踪和映射上传消息:

2018-11-21 10:52:22.573 [DEBUG] (Daemon worker) com.crashlytics  - Deobfuscation file(s) uploaded.

有什么问题吗?我在 Crashlytics 日志中没有看到任何最近(不工作)版本的映射文件相关日志,我在 gradle 中也没有看到 gradle 上传任务 运行ning ] 输出,而对于旧的(工作)版本,我看到以下内容:

:app:crashlyticsUploadDeobsRelease (Thread[Daemon worker Thread 2,5,main]) completed. Took 1.28 secs.

你读过这里吗:https://docs.fabric.io/android/crashlytics/dex-and-proguard.html ?

我在我的 proguard-rules.pro 文件(在您的应用程序文件夹中)中使用这些行来获取去混淆的崩溃报告

-keepattributes *Annotation*
-keepattributes SourceFile,LineNumberTable
# prevent Crashlytics obfuscation
-keep class com.crashlytics.** { *; }
-dontwarn com.crashlytics.**

并且确保不要在你的proguard文件中有这一行

-printmapping mapping.txt

唉。好吧,有一个简单的修复方法,可惜我花了这么长时间才找到它。我总是(直到现在)使用 ./gradlew iR./gradlew installRelease 的快捷方式)构建并在本地安装发布版本。我尝试(在令人尴尬的长时间之后)从 Android Studio 构建而不是 (Build > Generate Signed Bundle / Apk)。我一这样做就奏效了。

如果我发现非基于 AS 的发布与 Crashlytics 兼容,我会在这里更新。同时,如果您遇到问题,请查看示例 https://github.com/firebase/quickstart-android/tree/master/crash。 你可以接受它,放入你自己的 google-services.json 并像上面那样发布,然后检查 crashlytics.log(见上文)。

确保您的网络上没有任何东西阻止 Crashlytics 的主机。例如 PiHole。