【问题标题】:How do I get Firebase to tell me the exact line of code a user crashed at?如何让 Firebase 告诉我用户崩溃的确切代码行?
【发布时间】:2020-11-15 18:53:24
【问题描述】:

查看我的 Android 应用程序的这些崩溃报告。他们中的大多数要么给我一些无用的东西,比如它在第 1 行或第 3 行崩溃,要么根本没有给出任何行。 Firebase 应该是这样工作的吗?

【问题讨论】:

  • 为什么要投反对票?这个问题编码不是相关的吗? :(
  • 你在使用 Proguard 吗?
  • 我在 gradle proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'987654323@ 下发布这个写的
  • 有没有这样的:minifyEnabled true
  • 是的,也写了

标签: java android firebase crashlytics


【解决方案1】:

如果您使用 Proguard,请尝试以下解决方法:

在 Android Studio/ 的 Gradle 脚本 部分或资源管理器中项目的 app 文件夹中会有一个名为 proguard-rules.pro 的文件。 p>

在这个文件中取消注释这一行:

-keepattributes SourceFile,LineNumberTable

这将使您的 ClassName 和 line Number 保持正常。

如果您想隐藏您的 className,请取消注释此行。

-renamesourcefileattribute SourceFile

最后也写下这一行

-printmapping mapping.txt

这一行将生成一个 ma​​pping.txt 文件(您可以在 app 文件夹中找到该文件),以便在您在 Playstore 中发布应用程序时对您的堆栈跟踪进行去混淆处理。

完成所有这些后,为您的应用创建一个新的发布版本并更新您现有的版本。您的崩溃报告现在应该可以正常工作了。

如果您的应用在 Play 商店中可用,您还需要使用 apk 上传生成的 ma​​pping.txt 文件。 (如果是上传aab文件就不需要上传了)

要在新游戏控制台中上传映射文件,请按以下步骤操作:

  • 转到发布/“App bundle explorer”
  • 在右上角选择正确的工件
  • 打开下载标签
  • 滚动到资产部分
  • “ReTrace 映射文件”旁边应该有一个上传按钮

这应该可行。

【讨论】:

  • 谢谢。这是否有任何负面影响,例如安全性降低?我已经可以看出 aab 大了 15%。
  • 不,它不会影响应用程序的安全性,它只是用于打印具有有效行号的堆栈跟踪。而aab是一种根据设备分发apk的格式,它减小了apk的大小(上传aab后你会注意到)。
  • 好的,如果我要上传 aab 文件,我根本不需要关注该 mapping.txt 文件?
  • 是的,但是你必须在你的 proguard 文件中写下这个-printmapping mapping.txt 来打印它
  • 如果您在应用程序中使用 Proguard,则需要它。唯一的区别是:当你上传 aab 时,它会自动检测映射文件并上传,但在 apk 中你必须在每次发布时手动上传
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-08-03
  • 1970-01-01
  • 1970-01-01
  • 2012-06-06
  • 1970-01-01
  • 2012-01-28
  • 2016-09-26
相关资源
最近更新 更多