Sentry.init(options -> {
options.setDsn("YOUR_DSN_HERE");
options.setDebug(true);
});SentryAndroid.init(this, options -> {
options.setDsn("YOUR_DSN_HERE");
options.setDebug(true);
});graph TD
A[用户调用 init] --> B[获取锁]
B --> C[平台检查]
C --> D[配置加载]
D --> E[创建 Scopes]
E --> F[初始化客户端]
F --> G[注册集成]
G --> H[启动服务]
H --> I[初始化完成]
| 组件 | 作用 | 关键类 |
|---|---|---|
| Sentry | 主入口类 | Sentry.java |
| Options | 配置管理 | SentryOptions.java |
| Scopes | 上下文管理 | IScopes.java |
| Client | 事件处理 | SentryClient.java |
| Transport | 网络传输 | ITransport.java |
| Integration | 框架集成 | Integration.java |
- 🔴 用户代码 -
options.setXxx() - 🟠 配置文件 -
sentry.properties - 🟡 系统属性 -
-Dsentry.xxx - 🟢 环境变量 -
SENTRY_XXX - 🔵 Manifest -
<meta-data>(Android) - ⚪ 默认值
// 全局锁保护初始化
private static final AutoClosableReentrantLock lock = new AutoClosableReentrantLock();
// volatile 变量确保可见性
private static volatile IScopes rootScopes = NoOpScopes.getInstance();sequenceDiagram
participant App as Application
participant SA as SentryAndroid
participant S as Sentry
App->>SA: init(context, config)
SA->>SA: 检查集成可用性
SA->>SA: 加载 Manifest 配置
SA->>SA: 安装默认集成
SA->>S: 调用核心初始化
S->>SA: 初始化完成
SA->>SA: 启动会话跟踪
UncaughtExceptionHandlerIntegration- 全局异常捕获ShutdownHookIntegration- 应用关闭处理
ActivityLifecycleIntegration- Activity 生命周期AnrIntegration- ANR 检测NetworkBreadcrumbsIntegration- 网络监控FragmentLifecycleIntegration- Fragment 生命周期
SentrySpringIntegration- Spring 框架集成SentryWebMvcIntegration- Web MVC 集成
- 在应用启动时尽早初始化
- 使用环境变量管理不同环境的 DSN
- 启用调试模式进行问题排查
- 合理设置采样率控制数据量
- 重复调用
init()方法 - 在代码中硬编码敏感信息
- 忽略初始化异常
- 在生产环境启用调试模式
A: 检查 DSN 格式、网络连接、权限配置
A: 确认使用 SentryAndroid.init() 而非 Sentry.init()
A: 实现 Integration 接口并在配置中添加
A: SDK 使用异步处理,对应用性能影响极小
初始化完成后可监控:
- 错误捕获率
- 性能指标
- 用户会话
- 发布健康度
// 启用详细日志
options.setDebug(true);
options.setLogger(new SystemOutLogger());
// 检查初始化状态
if (Sentry.isEnabled()) {
System.out.println("Sentry 初始化成功");
}💡 提示: 这个快速参考涵盖了 Sentry 初始化的核心要点,详细信息请参考完整文档。