Flashduty Android RUM SDK 支持 Android 6.0 (API level 23)
及以上版本。通过集成 SDK,您可以实时监控 Android 应用的性能、错误和用户行为。
关于依赖和包名的说明Flashduty Android SDK 完全兼容 Datadog 开源协议,代码中的 import 语句使用 com.datadog.android.* 包名。您可以无缝复用 Datadog 生态的文档、示例和最佳实践,同时享受 Flashduty 平台的服务。
接入步骤
添加 SDK 依赖
在您的应用模块的 build.gradle 文件中添加 Flashduty SDK 依赖:dependencies {
implementation "cloud.flashcat:dd-sdk-android-core:<latest-version>"
implementation "cloud.flashcat:dd-sdk-android-rum:<latest-version>"
}
获取应用凭证
在 Flashduty 控制台的 RUM 应用管理页面:
- 创建或选择一个 Android 应用
- 获取以下凭证信息:
- Application ID - 应用唯一标识符
- Client Token - 客户端访问令牌
初始化 SDK
在您的 Application 类的 onCreate() 方法中初始化 SDK:import com.datadog.android.Datadog
import com.datadog.android.core.configuration.Configuration
import com.datadog.android.privacy.TrackingConsent
class SampleApplication : Application() {
override fun onCreate() {
super.onCreate()
val clientToken = "<CLIENT_TOKEN>"
val environmentName = "<ENV_NAME>"
val appVariantName = "<APP_VARIANT_NAME>"
val configuration = Configuration.Builder(
clientToken = clientToken,
env = environmentName,
variant = appVariantName
).build()
Datadog.initialize(this, configuration, TrackingConsent.GRANTED)
}
}
参数说明:
environmentName - 环境名称(如 production、staging)
appVariantName - 应用变体名称,用于区分不同构建版本的数据
- 更多配置选项请参阅 高级配置
启用 RUM 功能
配置并启用 Android SDK 的 RUM 功能:import com.datadog.android.rum.Rum
import com.datadog.android.rum.RumConfiguration
import com.datadog.android.rum.tracking.ActivityViewTrackingStrategy
val rumConfig = RumConfiguration.Builder(applicationId)
.trackUserInteractions()
.trackLongTasks(durationThreshold)
.useViewTrackingStrategy(ActivityViewTrackingStrategy(true))
.build()
Rum.enable(rumConfig)
SDK 将自动开始收集以下数据:
- 用户交互事件
- 长任务监控
- Activity 视图追踪
配置网络追踪(可选)
配置网络拦截器以追踪 HTTP 请求和响应:添加 OkHttp 依赖:dependencies {
implementation "cloud.flashcat:dd-sdk-android-okhttp:<latest-version>"
}
配置拦截器:import com.datadog.android.okhttp.DatadogInterceptor
import com.datadog.android.trace.TracingHeaderType
val tracedHostsWithHeaderType = mapOf(
"example.com" to setOf(
TracingHeaderType.DATADOG, // datadog 协议
TracingHeaderType.TRACECONTEXT // w3c 标准协议
),
"api.example.com" to setOf(
TracingHeaderType.DATADOG,
TracingHeaderType.TRACECONTEXT
)
)
val okHttpClient = OkHttpClient.Builder()
.addInterceptor(DatadogInterceptor.Builder(tracedHostsWithHeaderType).build())
.build()
使用 DatadogInterceptor 后,OkHttpClient
处理的每个请求都会被自动记录为资源,相关信息(URL、方法、状态码、错误)会自动填充。
- 只有在视图处于活动状态时发起的网络请求才会被追踪 -
要追踪应用在后台时的请求,请参阅 追踪后台事件 -
如果使用多个拦截器,请将
DatadogInterceptor 添加为第一个拦截器
追踪网络重定向或重试:要监控网络重定向或重试,可以将 DatadogInterceptor 用作网络拦截器:val okHttpClient = OkHttpClient.Builder()
.addNetworkInterceptor(DatadogInterceptor.Builder(tracedHostsWithHeaderType).build())
.build()
您还可以为 OkHttpClient 添加
EventListener,以自动追踪第三方提供商和网络请求的资源时序。
过滤特定错误:要过滤 DatadogInterceptor 报告的特定错误,可以在 RumConfiguration 中配置自定义 EventMapper:val rumConfig = RumConfiguration.Builder(applicationId)
.setErrorEventMapper { errorEvent ->
if (errorEvent.shouldBeDiscarded()) {
null
} else {
errorEvent
}
}
.build()
高级配置
追踪后台事件
您可以追踪应用在后台运行时的事件(例如崩溃和网络请求):
val rumConfig = RumConfiguration.Builder(applicationId)
.trackBackgroundEvents(true)
.build()
追踪后台事件可能会产生额外的会话,从而影响计费。如有疑问,请联系 Flashduty
支持团队。
离线数据处理
Android SDK 确保在用户设备离线时的数据可用性:
数据持久化机制: - 网络信号弱或设备电量过低时,事件以批次形式存储在本地 -
网络恢复后自动上传,确保不丢失数据 - 自动清理过旧数据,避免占用过多磁盘空间
即使用户在离线时使用应用,数据也会被保留并在网络恢复后上传,不会丢失任何监控数据。
追踪本地资源访问
您可以追踪 assets 和 raw 资源的访问情况:
val inputStream = context.getAssetAsRumResource(fileName)
val inputStream = context.getRawResAsRumResource(id)
WebView 集成
如果您的 Android 应用中包含 WebView,可以启用 WebView 追踪来监控 Web 内容的性能和错误。
添加 WebView 依赖
dependencies {
implementation "cloud.flashcat:dd-sdk-android-webview:<latest-version>"
}
启用 WebView 追踪
在您的 Activity 或 Fragment 中启用 WebView 追踪:import com.datadog.android.webview.WebViewTracking
// 为指定的 WebView 启用追踪
WebViewTracking.enable(webView, listOf("example.com", "*.example.com"))
参数说明:
webView - 需要追踪的 WebView 实例
allowedHosts - 允许追踪的域名列表,支持通配符(如 *.example.com)
WebView 中的 Web 页面现在可以与原生应用的 RUM 数据关联起来。
验证接入
接入完成后,验证集成是否成功:
访问控制台
登录 Flashduty 控制台,进入对应的 RUM 应用,查看是否有数据上报。
触发测试事件
在应用中执行以下操作验证数据采集: - 打开应用的不同页面,验证页面浏览事件 -
执行用户操作(点击、滑动等),验证交互事件 - 触发网络请求,验证资源加载事件
查看日志
在 Logcat 中查看是否有向数据上报端点的网络请求。如果看到数据上报请求且控制台中有数据显示,说明集成成功!
混淆配置
如果您的应用启用了代码混淆(ProGuard/R8),请在 proguard-rules.pro 文件中添加以下规则:
# Flashduty SDK (兼容 Datadog 协议)
-keep class com.datadog.android.** { *; }
-dontwarn com.datadog.android.**
下一步