hermes bundle 与 firebase crashlytics 的 react-native source map

react-native source map of hermes bundle with firebase crashlytics

我想阅读来自 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 以预编译格式 (build/generated/assets/react/appName/release/index.android.bundle) 生成 index.android.bundle,源映射文件 build/sourcemaps/react/appName/release/index.android.bundle.map。我尝试使用 npm package 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 包文件?

你只需要使用

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