FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

Merge 9c9715f4d4ae0c5dbba734db704cefe8bb7a1592 into dd1eb0c44c101686b… · getsentry/sentry-java@e729c4a · GitHub

Commit e729c4a

Browse files
authored
Merge 9c9715f into dd1eb0c
2 parents dd1eb0c + 9c9715f commit e729c4a

30 files changed

Lines changed: 2344 additions & 596 deletions

‎sentry-android-core/api/sentry-android-core.api‎

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -362,6 +362,24 @@ public final class io/sentry/android/core/NetworkBreadcrumbsIntegration : io/sen
362362
public fun register (Lio/sentry/IScopes;Lio/sentry/SentryOptions;)V
363363
}
364364

365+
public class io/sentry/android/core/PerfettoContinuousProfiler : io/sentry/IContinuousProfiler, io/sentry/transport/RateLimiter$IRateLimitObserver {
366+
public fun <init> (Lio/sentry/ILogger;Lio/sentry/android/core/internal/util/SentryFrameMetricsCollector;Lio/sentry/util/LazyEvaluator$Evaluator;Ljava/util/function/Supplier;)V
367+
public fun close (Z)V
368+
public fun getChunkId ()Lio/sentry/protocol/SentryId;
369+
public fun getProfilerId ()Lio/sentry/protocol/SentryId;
370+
public fun isRunning ()Z
371+
public fun onRateLimitChanged (Lio/sentry/transport/RateLimiter;)V
372+
public fun reevaluateSampling ()V
373+
public fun startProfiler (Lio/sentry/ProfileLifecycle;Lio/sentry/TracesSampler;)V
374+
public fun stopProfiler (Lio/sentry/ProfileLifecycle;)V
375+
}
376+
377+
public class io/sentry/android/core/PerfettoProfiler {
378+
public fun <init> (Landroid/content/Context;Lio/sentry/ILogger;Lio/sentry/ISentryExecutorService;)V
379+
public fun endAndCollect (Ljava/util/function/Consumer;)V
380+
public fun start (J)Z
381+
}
382+
365383
public final class io/sentry/android/core/ScreenshotEventProcessor : io/sentry/EventProcessor {
366384
public fun <init> (Lio/sentry/android/core/SentryAndroidOptions;Lio/sentry/android/core/BuildInfoProvider;Z)V
367385
public fun getOrder ()Ljava/lang/Long;

‎sentry-android-core/src/main/java/io/sentry/android/core/AndroidContinuousProfiler.java‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,11 @@
3838
import org.jetbrains.annotations.Nullable;
3939
import org.jetbrains.annotations.VisibleForTesting;
4040

41+
/**
42+
* Legacy Android implementation of {@link IContinuousProfiler}, using Android's {@code
43+
* Debug.startMethodTracingSampling} See {@link PerfettoContinuousProfiler} for the new
44+
* implementation using {@code ProfilingManager}, available on API 35+.
45+
*/
4146
@ApiStatus.Internal
4247
public class AndroidContinuousProfiler
4348
implements IContinuousProfiler, RateLimiter.IRateLimitObserver {

‎sentry-android-core/src/main/java/io/sentry/android/core/AndroidOptionsInitializer.java‎

Lines changed: 32 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import static io.sentry.android.core.NdkIntegration.SENTRY_NDK_CLASS_NAME;
44

5+
import android.annotation.SuppressLint;
56
import android.app.Application;
67
import android.content.Context;
78
import android.content.pm.PackageInfo;
@@ -294,6 +295,7 @@ static void initializeIntegrationsAndProcessors(
294295
}
295296

296297
/** Setup the correct profiler (transaction or continuous) based on the options. */
298+
@SuppressLint("NewApi")
297299
private static void setupProfiler(
298300
final @NotNull SentryAndroidOptions options,
299301
final @NotNull Context context,
@@ -336,16 +338,36 @@ private static void setupProfiler(
336338
performanceCollector.start(chunkId.toString());
337339
}
338340
} else {
339-
options.setContinuousProfiler(
340-
new AndroidContinuousProfiler(
341-
buildInfoProvider,
342-
Objects.requireNonNull(
343-
options.getFrameMetricsCollector(),
344-
"options.getFrameMetricsCollector is required"),
345-
options.getLogger(),
346-
options.getProfilingTracesDirPath(),
347-
options.getProfilingTracesHz(),
348-
() -> options.getExecutorService()));
341+
final @NotNull SentryFrameMetricsCollector frameMetricsCollector =
342+
Objects.requireNonNull(
343+
options.getFrameMetricsCollector(), "options.getFrameMetricsCollector is required");
344+
if (buildInfoProvider.getSdkInfoVersion() >= Build.VERSION_CODES.VANILLA_ICE_CREAM) {
345+
final @NotNull Context appContext = context.getApplicationContext();
346+
options.setContinuousProfiler(
347+
new PerfettoContinuousProfiler(
348+
options.getLogger(),
349+
frameMetricsCollector,
350+
() -> options.getExecutorService(),
351+
() ->
352+
new PerfettoProfiler(
353+
appContext, options.getLogger(), options.getExecutorService())));
354+
} else if (options.isEnableLegacyProfiling()) {
355+
options.setContinuousProfiler(
356+
new AndroidContinuousProfiler(
357+
buildInfoProvider,
358+
frameMetricsCollector,
359+
options.getLogger(),
360+
options.getProfilingTracesDirPath(),
361+
options.getProfilingTracesHz(),
362+
() -> options.getExecutorService()));
363+
} else {
364+
options
365+
.getLogger()
366+
.log(
367+
SentryLevel.WARNING,
368+
"enableLegacyProfiling is disabled and device is below API 35. "
369+
+ "No profiling data will be collected.");
370+
}
349371
}
350372
}
351373
}

‎sentry-android-core/src/main/java/io/sentry/android/core/ManifestMetadataReader.java‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,8 @@ final class ManifestMetadataReader {
119119

120120
static final String ENABLE_APP_START_PROFILING = "io.sentry.profiling.enable-app-start";
121121

122+
static final String ENABLE_LEGACY_PROFILING = "io.sentry.profiling.enable-legacy-profiling";
123+
122124
static final String ENABLE_SCOPE_PERSISTENCE = "io.sentry.enable-scope-persistence";
123125

124126
static final String REPLAYS_SESSION_SAMPLE_RATE = "io.sentry.session-replay.session-sample-rate";
@@ -542,6 +544,9 @@ static void applyMetadata(
542544
readBool(
543545
metadata, logger, ENABLE_APP_START_PROFILING, options.isEnableAppStartProfiling()));
544546

547+
options.setEnableLegacyProfiling(
548+
readBool(metadata, logger, ENABLE_LEGACY_PROFILING, options.isEnableLegacyProfiling()));
549+
545550
options.setEnableScopePersistence(
546551
readBool(
547552
metadata, logger, ENABLE_SCOPE_PERSISTENCE, options.isEnableScopePersistence()));

0 commit comments

Comments
 (0)

Back | FazBrowse Home | New Git URL