如何从指向index.android.bundle:474:6500的crashlytics堆栈跟踪行获取源文件行和列信息?
crashlytics报告堆栈跟踪文本看起来类似于:
Non-fatal Exception: io.invertase.firebase.crashlytics.UnhandledPromiseRejection: undefined is not an object (evaluating 't.includes')
at .removeFile(index.android.bundle:474:6500)
at .<unknown>(index.android.bundle:758:3472)
at .y(index.android.bundle:105:596)
at .<unknown>(index.android.bundle:105:2546)
at .y(index.android.bundle:105:596)
at .o(index.android.bundle:105:1483)
at .<unknown>(index.android.bundle:105:1626)
at .f(index.android.bundle:101:155)
at .<unknown>(index.android.bundle:101:1012)
at .y(index.android.bundle:107:657)
at .C(index.android.bundle:107:1021)
at .callImmediates(index.android.bundle:107:3216)
at .callImmediates([native code]:0:0)
at .value(index.android.bundle:25:3080)
at .<unknown>(index.android.bundle:25:1264)
at .value(index.android.bundle:25:2772)
at .value(index.android.bundle:25:1234)
at .value([native code]:0:0)
at .value([native code]:0:0)我尝试了堆叠美容有限的成功。有没有更可靠的方法?
发布于 2021-05-26 17:10:26
我花了几天时间想出一个好的解决方案。这是我迄今发现的最好的。
1)从Git标记或提交哈希创建源代码地图,与Crashlytics报告的版本相对应
iOS
react-native bundle --platform ios --entry-file index.js --dev false --reset-cache --bundle-output /tmp/bundle.ios.js --assets-dest /tmp/ --sourcemap-output sourcemap.ios.js.mapAndroid从build自动生成
// https://github.com/facebook/react-native/issues/7393
// https://stackoverflow.com/questions/34715106/how-to-add-sourcemap-in-react-native-for-production/34733906
project.ext.react = [
entryFile: "index.js",
enableHermes: false, // clean and rebuild if changing
extraPackagerArgs: ["--sourcemap-output",
file("$buildDir/../../../sourcemap.android.js.map")]
]或者手工构建:
react-native bundle --platform android --entry-file index.js --dev false --reset-cache --bundle-output /tmp/bundle.android.js --assets-dest /tmp/ --sourcemap-output sourcemap.android.js.map2)使用地铁-象征意义
npx metro-symbolicate sourcemap.android.js < fs-27-stack-trace.txt
Non-fatal Exception: io.invertase.firebase.crashlytics.UnhandledPromiseRejection: undefined is not an object (evaluating 't.includes')
at .removeFile(/Users/eddie/Documents/projects/react-native/my-react-native-app/v1.6.1146/source/app/components/Utility.js:567:includes)
at .<unknown>(/Users/eddie/Documents/projects/react-native/my-react-native-app/v1.6.1146/source/app/components/software-downloader/DownloadClient.js:237:oldVersion)我希望这会对其他人有所帮助。
https://stackoverflow.com/questions/67709680
复制相似问题