原生初始化
了解如何手动初始化原生 SDK。
默认情况下,React Native SDK 在 JS 层调用 init
方法时会初始化底层的原生 SDK。因此,SDK 存在一个当前限制,即无法捕获在 JS 层调用 init
方法之前发生的原生崩溃。你可以自己初始化原生 SDK 以克服此限制,或者如果你希望提供 React Native SDK 当前不支持的自定义选项。
为此,请在初始化选项中将 autoInitializeNativeSdk 设置为 false
:
Sentry.init({
dsn: "https://examplePublicKey@o0.ingest.sentry.io/0",
autoInitializeNativeSdk: false,
});
这将阻止 React Native SDK 自动初始化原生 SDK。
完全禁用原生层
不要使用 autoInitializeNativeSdk
来禁用原生层,而是使用 enableNative
接下来,按照以下文档初始化 Android 的原生 SDK,或按照 配置指南初始化 Sentry Cocoa SDK 来初始化 iOS 的原生 SDK。请注意,你不需要单独安装原生 SDK,因为它们已经包含在 React Native SDK 中。
在手动初始化 Sentry Cocoa SDK 时,要启用 App 启动 instrumentation 和慢帧及冻结帧功能,你需要 配置采样率。
使用此方法初始化会使用 Content Provider。由于 React Native 的 JavaScript 引擎也是通过 Content Provider 初始化的,我们无法保证 Sentry 总是会在 JavaScript 引擎之前初始化。
要使用自动初始化,请将以下内容添加到你的 AndroidManifest.xml
:
<meta-data
android:name="io.sentry.auto-init"
tools:replace="android:value"
android:value="true"
/>
然后按照 初始化 Android 的指南 操作。
如果你希望手动初始化 Android SDK 而不使用 Content Provider,你可以按照 手动初始化指南 进行操作,而无需添加标签,因为 io.sentry.auto-init
已被 React Native SDK 设置为 false
。