我是react-native-bugsnag的作者。
虽然我与该公司无关,但我喜欢他们的仪表板和定价模型,因此我创建了这个库,为我们的React Native程序员提供使用它们的服务的方式。
[TL/DR]:
1)复制下面的脚本,将其添加到项目根目录中,
2)在脚本开头更改版本以匹配您的React Native项目的本地部分的版本。
3)运行它:
sh crash_report.sh -i <BUGSNAG_KEY>
以打包和上传iOS源代码映射文件,
或者
sh crash_report.sh -a <BUGSNAG_KEY>
以打包并上传Android源代码映射文件。
[LONGER VERSION]:
官方的React Native Bugsnag SDK已经发布。
它支持的手动和非手动崩溃报告。
让我解释一下如何操作:
我创建了一个名为crash_report.sh
的文件,用于创建我的项目源代码映射,并将它们上传到Bugsnag,以及我所有的项目文件,这样我就可以看到如下所示的丰富错误报告:
要使用此功能,您只需将其添加到项目的根文件夹中,将版本变量(appVersion
)更改为与您的Xcode项目或Android Studio项目相对应的版本即可。
crash_report.sh:
#!/bin/bash
appVersion='1.0.0'
aflag=''
iflag=''
platform=''
bugsnagKey=''
while getopts 'i:a:' flag; do
case "${flag}" in
a)
aflag='true'
bugsnagKey=$OPTARG
;;
i) iflag='true'
bugsnagKey=$OPTARG
;;
*) printf "Usage: %s: [-a] [-i] args\n" $0
esac
done
if [ -n "$aflag" ] && [ -z "$iflag" ]; then
printf "Now bundling for android.\n"
platform='android'
fi
if [ -n "$iflag" ] && [ -z "$aflag" ]; then
printf "Now bundling for ios.\n"
platform='ios'
fi
if [ -z "$platform" ]; then
printf "\nUsage: <script> -i <BUGSNAG_KEY> OR -a <BUGSNAG_KEY>. \nTerminating...\n\n"
else
printf "Now fetching project properties from package.json\n"
echo 'Now creating sourcemaps\n App version: '${appVersion}' for platform: '${platform}
react-native bundle --dev false --platform ${platform} --entry-file index.${platform}.js --bundle-output main.${platform}.jsbundle --sourcemap-output main.${platform}.jsbundle.map
echo 'Now uploading with key: '${bugsnagKey}' for version '${appVersion}
CUR_DIRR=`pwd`
CUR_DIRR=${CUR_DIRR}'/'
PROJECT_FILES=$(find src -name '*.js' | while read -r i; do echo '-F '$CUR_DIRR$i'=@'$i; done)
curl -w "\n\n%{http_code}\n" --progress-bar -F apiKey=${bugsnagKey} -F appVersion=${appVersion} -F minifiedUrl="main.jsbundle" -F sourceMap=@main.${platform}.jsbundle.map -F minifiedFile=@main.${platform}.jsbundle -F overwrite=true ${PROJECT_FILES} https://upload.bugsnag.com
echo '\nDone.\n'
fi
希望这能帮助到某些人,我花了好几个小时才弄明白。
祝你玩得开心..!