使用Firebase Crashlytics获取Hermes捆绑包的React Native源映射。

5

我想要从React Native应用程序中阅读Crashlytics报告,但在Firebase控制台中完全无法阅读。 Android崩溃的示例看起来像这样:

Non-fatal Exception: io.invertase.firebase.crashlytics.UnhandledPromiseRejection
Invalid RegExp pattern: Parenthesized expression not closed
.RegExp ((native):0:0)
.anonymous (address at index.android.bundle:1:2065589)
.ue (address at index.android.bundle:1:2070284)
.ce (address at index.android.bundle:1:2069288)
.Be (address at index.android.bundle:1:2080135)

我已启用Hermes并且使用签名版本的构建apk生成预编译格式的index.android.bundlebuild/generated/assets/react/appName/release/index.android.bundle),同时生成了带有源映射文件的build/sourcemaps/react/appName/release/index.android.bundle.map。我尝试使用npm包source-map-explorer读取这些文件,但不幸的是它总是产生以下错误:

source-map-explorer index.android.bundle index.android.bundle.map 
index.android.bundle
  Your source map refers to generated column 165922 on line 1, but the source only contains 165920 column(s) on that line.
  Check that you are using the correct source map.
  1. 我能否将源映射上传到Firebase,以使错误在Firebase控制台中可读?
  2. 如何使用sourcemap读取Hermes捆绑文件?

如何在iOS上进行调试? - Harleen Kaur Arora
1个回答

5

你只需要使用

npx metro-symbolicate android/app/build/generated/sourcemaps/react/release/index.android.bundle.map < stacktrace.txt

将你的堆栈跟踪放入stacktrack.txt文件中。(删除0:0以使其正常工作)

更多信息请访问https://reactnative.dev/docs/next/symbolication


6
我猜在 Firebase 控制台中没有办法自动使其工作,是这样吗? - twiz
你好,我尝试了这个代码,它创建了一个空的stacktrace.txt文件。谢谢。 - user2078023
1
这个命令将Firebase Crashlytics的堆栈跟踪转换为更易读的形式。您需要从Crashlytics复制堆栈跟踪,粘贴到stacktrack.txt文件中,然后运行metro-symbolicate命令。 - undefined
这个命令将Firebase Crashlytics的堆栈跟踪转换为更易读的格式。您需要从Crashlytics复制堆栈跟踪,粘贴到stacktrack.txt文件中,然后运行metro-symbolicate命令。 - Roni Castro

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接