问题
使用 Android Studio 打包后,上传使用 sentry 官网命令打包的 sourcemap 文件,sentry能正常显示异常位置源码。
使用 pushy 热更新之后,sentry 不能正常显示异常位置的源代码。
如下图:
问题原因:
使用 pushy 完成 app 的热更新功能,同时使用 sentry 对应用异常监控,热更新后由于没有 sourcemap,sentry 监控到的异常也就不能正常显示源码。
sentry 官方给的生成的 map 文件的命令:
npx react-native bundle \
--dev false \
--platform android \
--entry-file index.js \
--reset-cache \
--bundle-output index.android.bundle \
--sourcemap-output index.android.bundle.map
原因就是热更新之后包变成了 index.bundlejs
,但是却并没有上传 index.bundlejs
和index.bundlejs.map
文件到 sentry。
解决办法:
pushy 在生成 ppk 热更新包的时候,传递参数 --sourcemap
控制 sourcemap
生成。
如果开启,则能在 intermedia 目录中生成对应源码的 sourcemap 上传到 sentry。
pushy bundle --platform android --sourcemap
生成的 sourcemap 文件路径
Welcome to Metro v0.76.7
Fast - Scalable - Integrated
Debug ID module found. Skipping Sentry Debug ID module...
info Bundle Debug ID: 4b0ea199-25af-4b7c-9a99-372ee72aec80
info Writing bundle output to:, .pushy/intermedia/android/index.bundlejs
info Writing sourcemap output to:, .pushy/intermedia/android/index.bundlejs.map
info Done writing bundle output
info Done writing sourcemap output
info Copying 160 asset files
info Done copying assets
Packing
ppk热更包已生成并保存到: .pushy/output/android.1735476299841.ppk