- Gradle 插件在配置阶段生成 yyyyMMddHHmmss 格式的 buildId,通过 BuildConfig.XUQM_BUILD_ID 注入 APK,并作为 buildId 字段上传 sourcemap - SDK 通过反射读取 BuildConfig.XUQM_BUILD_ID,在所有事件 (captureError/captureCrash/warn) 的 IssueEvent 中携带 buildId - LogUploader 序列化时将 buildId 写入上报 JSON - IssueEvent 新增 buildId 可选字段 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
50 行
1.4 KiB
Kotlin
50 行
1.4 KiB
Kotlin
package com.xuqm.sdk.bugcollect
|
|
|
|
data class IssueEvent(
|
|
val eventId: String = java.util.UUID.randomUUID().toString(),
|
|
val level: String,
|
|
val platform: String,
|
|
val fingerprint: String,
|
|
val appKey: String,
|
|
val timestamp: Long = System.currentTimeMillis(),
|
|
val exception: ExceptionInfo? = null,
|
|
val breadcrumbs: List<Breadcrumb> = emptyList(),
|
|
val release: String,
|
|
val buildId: String? = null,
|
|
val environment: String = "production",
|
|
val userId: String? = null,
|
|
val sessionId: String? = null,
|
|
val user: UserInfo? = null,
|
|
val device: DeviceInfo? = null,
|
|
val tags: Map<String, Any?> = emptyMap(),
|
|
) {
|
|
data class ExceptionInfo(
|
|
val type: String,
|
|
val value: String,
|
|
val stacktrace: String? = null,
|
|
)
|
|
|
|
data class UserInfo(
|
|
val id: String? = null,
|
|
)
|
|
|
|
data class DeviceInfo(
|
|
val name: String? = null,
|
|
val model: String? = null,
|
|
val manufacturer: String? = null,
|
|
val osName: String? = null,
|
|
val osVersion: String? = null,
|
|
val locale: String? = null,
|
|
val timezone: String? = null,
|
|
val network: String? = null,
|
|
val isEmulator: Boolean? = null,
|
|
val freeMemoryMb: Int? = null,
|
|
val buildType: String? = null,
|
|
)
|
|
|
|
data class SdkInfo(
|
|
val name: String,
|
|
val version: String,
|
|
)
|
|
}
|