Hermes

了解如何在我们的 React Native SDK 中使用 Hermes 引擎。

Sentry React Native SDK 默认支持 Hermes 引擎。

阅读我们的 React Native 源映射 文档,了解如何为你的应用上传源映射。

本节描述了使用 Hermes 时常见的问题及解决方法。

如果你使用 EXTRA_PACKAGER_ARGS,你只需要打包器源映射。这是使用 @sentry/wizard 的默认行为。如果你使用 SOURCEMAP_FILE,则需要组合的 Hermes 源映射。

我们的 React Native 源映射 文档基于 iOS 的 react-native-xcode.sh 和 Android 的 BundleHermesCTask.kt。如果你在手动生成的工件上有问题,请使用上述链接检查你的 React Native 工具链步骤。

React Native 0.70 和 CodePush 更新默认会压缩打包器 bundle。

BundleHermesCTask.kt 仅从版本 0.71 开始可用。对于之前的版本,请使用 react.gradle

更多详情请参阅 React Native 仓库中的 此问题

如果你使用 Hermes,你不应启用 RAM bundles 功能。在 Hermes 中,加载字节码时,mmap 确保整个文件不会被加载。使用 Hermes 与 RAM bundles 可能会导致问题,因为这两种机制不兼容。

Sentry 增加了对使用 hermes 引擎的 react-native 构建的支持,这需要对 Sentry SDK、sentry-cli 以及 Sentry 本身进行更改。

使用 SaaS 产品 (sentry.io) 的 Sentry 用户需要更新 SDK 和 sentry-cli。SDK 的最低要求版本是 @sentry/react-native SDK 版本 1.3.3@sentry/cli 版本 1.51.1

对于自托管 Sentry 用户,最低要求版本是 f07352b

一旦你有了 SDK 的最低版本,Sentry 将按照 React Native Sentry 文档 中描述的标准集成提供支持。

要使用 Fastlane 上传生成的源映射,请使用 sentry_upload_sourcemap 操作。有关如何安装 Sentry Fastlane 插件的信息,请参阅 这里

Copied
sentry_upload_sourcemap(
  auth_token: 'sntrys_YOUR_TOKEN_HERE',
  org_slug: 'example-org',
  project_slug: 'example-project',
  version: '...',
  app_identifier: '...', # bundle_identifer of your app
  build: '...', # optional build number of your app
  dist: '...', # optional distribution of the release usually the buildnumber
  sourcemap: ['index.android.bundle', 'index.android.bundle.map'],
  rewrite: true
)