Sentry 集成
Sentry 集成
AIT SDK Sentry Unity SDK与其支持自动集成。安装了 Sentry 后,会自动向崩溃和错误事件注入 AIT 平台上下文(设备 ID、环境、部署 ID 等)。
零成本 opt-in:如果项目未安装 Sentry SDK,相关代码根本不会被编译。没有运行时开销,也没有编译错误。
安装
方法 1:Unity 菜单(推荐)
在 Unity Editor 中
AIT>Install Sentry SDK点击。Package Manager 会自动安装 Sentry Unity SDK 4.1.0。
方法 2:直接添加 manifest.json
Packages/manifest.json中可以直接添加:
{
"dependencies": {
"io.sentry.unity": "https://github.com/getsentry/unity.git#4.1.0"
}
}支持版本
最低:
io.sentry.unity4.0.0推荐:4.1.0 及以上
设置
只需要设置 Sentry SDK 本身。AIT 集成会在无需额外设置的情况下自动运行。
DSN 设置
在 Unity Editor 中 工具 > Sentry打开 DSN并输入。
DSN 可在 Sentry 项目的 设置 > Client Keys (DSN)中查看。设置值会保存到 Assets/Resources/Sentry/SentryOptions.asset中。
自动注入的 AIT 上下文
当 Sentry SDK 处于启用状态时,AIT SDK 会自动注入以下上下文。
标签
ait.sdk_version
AIT SDK 版本
1.11.2
ait.unity_version
Unity 引擎版本
6000.3.3f1
ait.device_id
设备唯一 ID
abc123...
ait.platform_os
平台 OS
iOS, Android
ait.locale
设备区域设置
ko-KR
ait.toss_app_version
Toss 应用版本
5.80.0
ait.environment
运行环境
production, staging
ait.deployment_id
部署 ID
deploy-xyz
ait.current_scene
当前 Unity 场景
MainMenu
用户
User.Id
AIT 设备 ID(AIT.GetDeviceId())
上下文对象
apps_in_toss 会添加一个名为的自定义上下文对象:
面包屑
每次加载 Unity 场景时,breadcrumb 都会自动记录:
消息
场景已加载:MainMenu
类别
scene
级别
信息
数据
scene_name, scene_build_index, load_mode
CI/CD 环境变量
Sentry SDK 核心(构建时自动注入)
AIT SDK 在 WebGL 构建时 SENTRY_DSN 从环境变量中 SentryOptions.asset会自动生成。
SENTRY_DSN
DSN → SentryOptions.asset 自动生成
https://key@sentry.io/123
SENTRY_ENVIRONMENT
环境标识符(自动注入)
production, staging
SENTRY_RELEASE
Release 版本(自动注入)
my-app@1.0.0
sentry-cli(构建时)
用于上传调试符号和 source map。请在 CI/CD 管道中设置。
SENTRY_AUTH_TOKEN
API 认证令牌
sntrys_...
SENTRY_ORG
组织 slug
my-org
SENTRY_PROJECT
项目 slug
unity-game
CI/CD 管道示例
工作原理
条件编译
Sentry 集成通过 Unity 的 versionDefines来实现条件编译:
io.sentry.unity安装 4.0.0 及以上版本时AIT_SENTRY_AVAILABLEdefine 会自动启用。AppsInToss.Sentry程序集的defineConstraints中AIT_SENTRY_AVAILABLE会被设置。未安装 Sentry SDK 时,整个程序集会被排除在编译之外。
IL2CPP 裁剪保护
为防止在 WebGL(IL2CPP)构建中代码被移除,应用了三重保护:
[assembly: AlwaysLinkAssembly]
防止程序集本身被链接器移除
[Preserve]
保留单个类型/方法
link.xml
声明保留程序集内的所有类型
Unity 6+ IL2CPP 堆栈追踪
在 Unity 6 及以上版本中,WebGL 构建会自动启用 IL2CPP 堆栈追踪中的 C# 文件/行号信息。这样可以在 Sentry 中将崩溃位置精确定位到源代码行。
故障排查
最后更新于
这有帮助吗?