React Native 引入 Sentry官方文档翻译

双浩涆
2023-12-01

React Native

React-Native SDK iOS  Android使用了一个原生的扩展,但如果必要的话,可回退到纯 JavaScript 版本.

集成SDK

Sentry在程序运行时使用SDK捕获数据。这些都是特定于平台的,让Sentry能够深入了解您的应用程序是如何工作的。

注意

如果你使用的是 expo-cli 你需要使用另一个SDK 查看https://docs.expo.io/versions/latest/guides/using-sentry/ 这个SDK 仅适用弹出(ejected)的项目或者直接使用React Native的项目.

 

安装 React Native SDK

npm install @sentry/react-native --save#

yarn add @sentry/react-native

Linking

由于我们的SDK还支持本机崩溃, 我们需要link SDK 到你的native 项目.

react-native >= 0.60 :

yarn sentry-wizard -i reactNative -p ios android cd ios

pod install

 

由于我们的 SDK 支持 auto-linking ,并且iOS 依赖于 CocoaPods, 你需要安安装相关依赖.

 react-native < 0.60 ,你需要运行 react-native link.

react-native link @sentry/react-native

 

link 步骤或 sentry-wizard ,会根据你的项目进行修改.

Sentry Wizard 会全程引导你正确地设置所有的东西。 这个只需要做一次, 创建的文件需要加到你的版本控制里面。

出现了下面的变化:

  • Android本机奔溃报告添加sentry-java
  •  iOS本机奔溃添加sentry-cocoa
  •  Android开启 Sentry Gradle 编译步骤
  • patch _MainApplication.java_ for Android
  • _index.js/App.js_配置Sentry  DSN
  • 存储生成凭据 _ios/sentry.properties_ _android/sentry.properties_.

 react-native-sentry 升级

如果你是从早期版本的react-native-sentry升级来的,你需要unlink 该包,确保生成的代码更新到最新版本:

$ react-native unlink react-native-sentry

package.json删除 react-native-sentry  后,再按安装说明进行安装.

iOS 特有步骤

当你使用Xcode, 你可以直接 hook 到编译过程中,上传调试符号和 source maps. 如果你使用的是 bitcode, 你需要在构建过程中关闭上传调试符号,然后分别从iTunes上传调试符号连接到Sentry

Android 特有步骤

对应 Android, 我们hook  Gradle  source map 构建过程中. 当你运行 react-native link, Gradle 文件会自动更新。 当你运行 ./gradlew assembleRelease source maps 自动生成并上传到Sentry.

链接 SDK  Sentry

你在sentry中完成设置之后, Sentry 会给你一个DSN 或者 Data Source Name. 它看起来像一个标准的. 它有几部分组成,包括协议, 公钥key, 服务器地址, 和项目标志.

初始化SDK, 你需要调用以下代码:

Showing configuration for 

your-org / your-project 

import * as Sentry from '@sentry/react-native';

    Sentry.init({ 

   dsn: 'https://<key>@sentry.io/<project>', 

});

sentry-wizard 会将它加到你的 App.js

验证您的设置

我们故意抛出一个错误:

throw new Error("My first Sentry error!");

你可以触发一个 native crash:

Sentry.nativeCrash();

捕捉错误

大多数情况下, 你可以通过captureException()自动捕获错误 .

try { 

  aFunctionThatMightFail();

} catch (err) { 

  Sentry.captureException(err);

}

设置Release / Dist

Sentry.setRelease('release');Sentry.setDist('dist');

由于 SDK 是统一的, 所有在JavaScript 中可用的函数,在这个SDK中也可用, 例如:

更多资料

 类似资料: