|
16 | 16 |
|
17 | 17 | package com.splunk.rum;
|
18 | 18 |
|
| 19 | +import static com.splunk.rum.SplunkRum.APPLICATION_ID_KEY; |
19 | 20 | import static com.splunk.rum.SplunkRum.APP_NAME_KEY;
|
| 21 | +import static com.splunk.rum.SplunkRum.APP_VERSION_CODE_KEY; |
20 | 22 | import static com.splunk.rum.SplunkRum.COMPONENT_APPSTART;
|
21 | 23 | import static com.splunk.rum.SplunkRum.COMPONENT_ERROR;
|
22 | 24 | import static com.splunk.rum.SplunkRum.COMPONENT_KEY;
|
23 | 25 | import static com.splunk.rum.SplunkRum.COMPONENT_UI;
|
24 | 26 | import static com.splunk.rum.SplunkRum.RUM_TRACER_NAME;
|
| 27 | +import static com.splunk.rum.SplunkRum.SPLUNK_OLLY_UUID_KEY; |
25 | 28 | import static io.opentelemetry.android.RumConstants.APP_START_SPAN_NAME;
|
26 | 29 | import static io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor.constant;
|
27 | 30 | import static io.opentelemetry.semconv.ResourceAttributes.DEPLOYMENT_ENVIRONMENT;
|
|
40 | 43 | import io.opentelemetry.android.config.OtelRumConfig;
|
41 | 44 | import io.opentelemetry.android.instrumentation.activity.VisibleScreenTracker;
|
42 | 45 | import io.opentelemetry.android.instrumentation.anr.AnrDetector;
|
| 46 | +import io.opentelemetry.android.instrumentation.anr.AnrDetectorBuilder; |
43 | 47 | import io.opentelemetry.android.instrumentation.crash.CrashReporter;
|
| 48 | +import io.opentelemetry.android.instrumentation.crash.CrashReporterBuilder; |
44 | 49 | import io.opentelemetry.android.instrumentation.lifecycle.AndroidLifecycleInstrumentation;
|
45 | 50 | import io.opentelemetry.android.instrumentation.network.CurrentNetworkProvider;
|
46 | 51 | import io.opentelemetry.android.instrumentation.slowrendering.SlowRenderingDetector;
|
@@ -286,45 +291,70 @@ private Resource createSplunkResource() {
|
286 | 291 | private void installAnrDetector(OpenTelemetryRumBuilder otelRumBuilder, Looper mainLooper) {
|
287 | 292 | otelRumBuilder.addInstrumentation(
|
288 | 293 | instrumentedApplication -> {
|
289 |
| - AnrDetector.builder() |
290 |
| - .addAttributesExtractor(constant(COMPONENT_KEY, COMPONENT_ERROR)) |
291 |
| - .setMainLooper(mainLooper) |
292 |
| - .build() |
293 |
| - .installOn(instrumentedApplication); |
| 294 | + ErrorIdentifierExtractor extractor = new ErrorIdentifierExtractor(application); |
| 295 | + ErrorIdentifierInfo errorIdentifierInfo = extractor.extractInfo(); |
| 296 | + String applicationId = errorIdentifierInfo.getApplicationId(); |
| 297 | + String versionCode = errorIdentifierInfo.getVersionCode(); |
| 298 | + String uuid = errorIdentifierInfo.getCustomUUID(); |
294 | 299 |
|
295 |
| - initializationEvents.emit("anrMonitorInitialized"); |
296 |
| - }); |
297 |
| - } |
| 300 | + AnrDetectorBuilder builder = AnrDetector.builder(); |
| 301 | + builder.addAttributesExtractor(constant(COMPONENT_KEY, COMPONENT_ERROR)); |
298 | 302 |
|
299 |
| - private void installSlowRenderingDetector(OpenTelemetryRumBuilder otelRumBuilder) { |
300 |
| - otelRumBuilder.addInstrumentation( |
301 |
| - instrumentedApplication -> { |
302 |
| - SlowRenderingDetector.builder() |
303 |
| - .setSlowRenderingDetectionPollInterval( |
304 |
| - builder.slowRenderingDetectionPollInterval) |
305 |
| - .build() |
306 |
| - .installOn(instrumentedApplication); |
307 |
| - initializationEvents.emit("slowRenderingDetectorInitialized"); |
| 303 | + if (applicationId != null) |
| 304 | + builder.addAttributesExtractor(constant(APPLICATION_ID_KEY, applicationId)); |
| 305 | + if (versionCode != null) |
| 306 | + builder.addAttributesExtractor(constant(APP_VERSION_CODE_KEY, versionCode)); |
| 307 | + if (uuid != null) |
| 308 | + builder.addAttributesExtractor(constant(SPLUNK_OLLY_UUID_KEY, uuid)); |
| 309 | + |
| 310 | + builder.setMainLooper(mainLooper).build().installOn(instrumentedApplication); |
| 311 | + |
| 312 | + initializationEvents.emit("anrMonitorInitialized"); |
308 | 313 | });
|
309 | 314 | }
|
310 | 315 |
|
311 | 316 | private void installCrashReporter(OpenTelemetryRumBuilder otelRumBuilder) {
|
312 | 317 | otelRumBuilder.addInstrumentation(
|
313 | 318 | instrumentedApplication -> {
|
314 |
| - CrashReporter.builder() |
315 |
| - .addAttributesExtractor( |
| 319 | + ErrorIdentifierExtractor extractor = new ErrorIdentifierExtractor(application); |
| 320 | + ErrorIdentifierInfo errorIdentifierInfo = extractor.extractInfo(); |
| 321 | + String applicationId = errorIdentifierInfo.getApplicationId(); |
| 322 | + String versionCode = errorIdentifierInfo.getVersionCode(); |
| 323 | + String uuid = errorIdentifierInfo.getCustomUUID(); |
| 324 | + |
| 325 | + CrashReporterBuilder builder = CrashReporter.builder(); |
| 326 | + builder.addAttributesExtractor( |
316 | 327 | RuntimeDetailsExtractor.create(
|
317 | 328 | instrumentedApplication
|
318 | 329 | .getApplication()
|
319 | 330 | .getApplicationContext()))
|
320 |
| - .addAttributesExtractor(new CrashComponentExtractor()) |
321 |
| - .build() |
322 |
| - .installOn(instrumentedApplication); |
| 331 | + .addAttributesExtractor(new CrashComponentExtractor()); |
| 332 | + |
| 333 | + if (applicationId != null) |
| 334 | + builder.addAttributesExtractor(constant(APPLICATION_ID_KEY, applicationId)); |
| 335 | + if (versionCode != null) |
| 336 | + builder.addAttributesExtractor(constant(APP_VERSION_CODE_KEY, versionCode)); |
| 337 | + if (uuid != null) |
| 338 | + builder.addAttributesExtractor(constant(SPLUNK_OLLY_UUID_KEY, uuid)); |
| 339 | + |
| 340 | + builder.build().installOn(instrumentedApplication); |
323 | 341 |
|
324 | 342 | initializationEvents.emit("crashReportingInitialized");
|
325 | 343 | });
|
326 | 344 | }
|
327 | 345 |
|
| 346 | + private void installSlowRenderingDetector(OpenTelemetryRumBuilder otelRumBuilder) { |
| 347 | + otelRumBuilder.addInstrumentation( |
| 348 | + instrumentedApplication -> { |
| 349 | + SlowRenderingDetector.builder() |
| 350 | + .setSlowRenderingDetectionPollInterval( |
| 351 | + builder.slowRenderingDetectionPollInterval) |
| 352 | + .build() |
| 353 | + .installOn(instrumentedApplication); |
| 354 | + initializationEvents.emit("slowRenderingDetectorInitialized"); |
| 355 | + }); |
| 356 | + } |
| 357 | + |
328 | 358 | // visible for testing
|
329 | 359 | SpanExporter buildFilteringExporter(
|
330 | 360 | CurrentNetworkProvider currentNetworkProvider,
|
|
0 commit comments