<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/android-profiling-now-uses-perfetto-via-profilingmanager-lznu7eh0d" -->

---
title: Android profiling now uses Perfetto via ProfilingManager
description: Sentry Android SDK 8.51.0 switches profiling on Android 15+ devices to Perfetto via the system ProfilingManager API. This replaces the legacy...
canonical: https://daily.dev/posts/android-profiling-now-uses-perfetto-via-profilingmanager-lznu7eh0d
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Android profiling now uses Perfetto via ProfilingManager | daily.dev
og:description: Sentry Android SDK 8.51.0 switches profiling on Android 15+ devices to Perfetto via the system ProfilingManager API. This replaces the legacy...
og:url: https://daily.dev/posts/android-profiling-now-uses-perfetto-via-profilingmanager-lznu7eh0d
og:image: https://api.daily.dev/og/posts/Lznu7eh0D.png
og:image:alt: Android profiling now uses Perfetto via ProfilingManager
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Android profiling now uses Perfetto via ProfilingManager

**[Sentry Engineering](https://daily.dev/sources/sentry)** · 4 min read · 0 upvotes · 0 comments

## Summary

Sentry Android SDK 8.51.0 switches profiling on Android 15+ devices to Perfetto via the system ProfilingManager API. This replaces the legacy Debug.startMethodTracing-based tracer, which can crash an app when other code in the process creates native threads, attaches them to the runtime, and exits without detaching them. Perfetto profiling runs outside the app process, and most of its work happens in a system process. Overhead is lower than with the legacy profiler, and profiles are more representative. About 41% of active Android devices run Android 15+. Devices below Android 15 keep the legacy profiler by default, and setting the new enableLegacyProfiling option to false is recommended to avoid the legacy tracer completely. Continuous profiling users need only upgrade, since Android 15+ devices switch automatically. Android rate limits profiling requests, so even with profileSessionSampleRate set to 1.0 not every session gets a profile.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://blog.sentry.io/android-profilingmanager-perfetto>

## Questions this post answers

### Why does my Android app crash when using Debug.startMethodTracing for profiling?

The Android runtime's built-in tracer used by Debug.startMethodTracing() can crash an app when other code in the process creates native threads, attaches them to the runtime, and exits without detaching them. This is a known Android runtime bug, not something Sentry causes, but using that tracer for profiling can make the crash surface more often. Switching to Perfetto-based profiling via ProfilingManager avoids this tracer entirely.

_Tracking profiler-related crashes across Android versions is easier when you follow SDK changes like this on daily.dev._

### What percentage of Android devices support the ProfilingManager API for Perfetto profiling?

ProfilingManager is only available on Android 15 (API 35) and newer, which covers about 41% of active Android devices according to apilevels.com figures. Devices below Android 15 automatically fall back to the legacy method-tracing profiler, so coverage isn't lost, unless you explicitly disable legacy profiling with the enableLegacyProfiling option.

_Deciding how much to invest in Android 15-only features gets easier by tracking adoption data like this on daily.dev._

### How do I test Sentry's continuous profiling locally without Android's rate limiter blocking it?

You can disable Android's profiling rate limiter on your test device with the adb command: 'adb shell device_config put profiling_testing rate_limiter.disabled true'. Normally, even with profileSessionSampleRate set to 1.0, the system rate limits profiling requests and doesn't guarantee every session gets profiled, since the OS decides when to actually record a profile.

_Debugging flaky local profiling setups is faster when you keep up with SDK tips like this on daily.dev._

## Similar posts on daily.dev

- [Datadog delivers millions of in-depth performance insights with ProfilingManager](https://daily.dev/posts/datadog-delivers-millions-of-in-depth-performance-insights-with-profilingmanager-gnkgkmtm5) · Android Developers Blog · 0 upvotes · 0 comments
- [Android Developers Blog: Leveling Guide for your Performance Journey](https://daily.dev/posts/android-developers-blog-leveling-guide-for-your-performance-journey-rg3gn8osv) · Android Developers Blog · 1 upvotes · 0 comments

---

Tags: [#android](https://daily.dev/tags/android), [#kotlin](https://daily.dev/tags/kotlin)

[View this post on daily.dev](https://daily.dev/posts/android-profiling-now-uses-perfetto-via-profilingmanager-lznu7eh0d)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Android profiling now uses Perfetto via ProfilingManager","url":"https://daily.dev/posts/android-profiling-now-uses-perfetto-via-profilingmanager-lznu7eh0d","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/android-profiling-now-uses-perfetto-via-profilingmanager-lznu7eh0d"},"datePublished":"2026-11-02T18:22:34.985Z","dateModified":"2026-11-02T18:32:06.235Z","description":"Sentry Android SDK 8.51.0 switches profiling on Android 15+ devices to Perfetto via the system ProfilingManager API. This replaces the legacy...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/fae8540e122e020e02f2847908ea4575?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/fae8540e122e020e02f2847908ea4575?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Sentry Engineering","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Sentry Engineering","logo":"https://media.daily.dev/image/upload/s--qqXwMThM--/f_auto/v1710505439/logos/sentry","url":"https://daily.dev/sources/sentry"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/android-profiling-now-uses-perfetto-via-profilingmanager-lznu7eh0d","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"android,kotlin","timeRequired":"PT4M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Sentry Engineering","item":"https://daily.dev/sources/sentry"},{"@type":"ListItem","position":3,"name":"Android profiling now uses Perfetto via ProfilingManager"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/android-profiling-now-uses-perfetto-via-profilingmanager-lznu7eh0d#faq","mainEntity":[{"@type":"Question","name":"Why does my Android app crash when using Debug.startMethodTracing for profiling?","acceptedAnswer":{"@type":"Answer","text":"The Android runtime's built-in tracer used by Debug.startMethodTracing() can crash an app when other code in the process creates native threads, attaches them to the runtime, and exits without detaching them. This is a known Android runtime bug, not something Sentry causes, but using that tracer for profiling can make the crash surface more often. Switching to Perfetto-based profiling via ProfilingManager avoids this tracer entirely. Tracking profiler-related crashes across Android versions is easier when you follow SDK changes like this on daily.dev."}},{"@type":"Question","name":"What percentage of Android devices support the ProfilingManager API for Perfetto profiling?","acceptedAnswer":{"@type":"Answer","text":"ProfilingManager is only available on Android 15 (API 35) and newer, which covers about 41% of active Android devices according to apilevels.com figures. Devices below Android 15 automatically fall back to the legacy method-tracing profiler, so coverage isn't lost, unless you explicitly disable legacy profiling with the enableLegacyProfiling option. Deciding how much to invest in Android 15-only features gets easier by tracking adoption data like this on daily.dev."}},{"@type":"Question","name":"How do I test Sentry's continuous profiling locally without Android's rate limiter blocking it?","acceptedAnswer":{"@type":"Answer","text":"You can disable Android's profiling rate limiter on your test device with the adb command: 'adb shell device_config put profiling_testing rate_limiter.disabled true'. Normally, even with profileSessionSampleRate set to 1.0, the system rate limits profiling requests and doesn't guarantee every session gets profiled, since the OS decides when to actually record a profile. Debugging flaky local profiling setups is faster when you keep up with SDK tips like this on daily.dev."}}]}
```

