Roman Zavarnitsyn

Roman Zavarnitsyn

Mobile @ Sentry

Perg, Austria

Actions

Builds, infrastructure, CI, SDKs, bytecode

Area of Expertise

  • Information & Communications Technology

Topics

  • gradle
  • JVM
  • Android
  • Mobile

Deobfuscating Billions of Android Crashes a Month

Every Android developer has been there: a crash report full of a.b.c() and x.y.z() - completely useless without a R8/ProGuard mapping file. At Sentry, we ingest over 3 billion Android crash events per month, and getting deobfuscation right matters a lot.

This talk tells the story of a production incident that forced us to rethink how R8/ProGuard deobfuscation works at scale - from loading entire mapping files into memory (sometimes hundreds of megabytes each) to a new on-disk cache format that serves 99% of deobfuscation requests without ever touching the original file.

The result: 88% latency reduction and a 20x throughput improvement.

We'll cover the architecture of the R8/ProGuard cache format, and what it actually looks like to ship low-level symbolication infrastructure at this scale.

If you've ever wondered what happens to your mapping file after you hit upload - this is the talk for you.

Rewind and Resolve: A deep dive into building Session Replay for Android

Understanding and debugging production issues can feel like solving a puzzle with missing pieces. We will dive deep into the journey of building a session replay feature for the Sentry Android SDK that helps developers capture those elusive bugs, respects user privacy, and maintains low overhead.

In this talk, we'll explore the technical aspects, including:

- Taking screenshots of a Window
- Redacting the screenshots to ensure no sensitive user data is leaked
- Encoding the screenshots into a video
- Collecting supporting data like breadcrumbs, network requests, logs, touches to improve debuggability
- Maintaining low performance overhead while implementing all of the above.

We'll also demonstrate how our tool empowers Android engineers to gain actionable insights when solving errors, crashes, and ANRs.

Whether you're an Android developer looking to improve your debugging toolkit or someone interested in the technical guts of the Android OS, the session will cover it all. Join us for a glimpse into the future of mobile debugging – it's a replay you won't want to miss!

Revolutionizing ANR Detection at Sentry

In this talk, we'll dive into the ANR (Application Not Responding) detection mechanism of the Sentry Android SDK. We'll compare the existing approaches, such as watchdog and native signal handler, with the new ApplicationExitInfo API available from Android 11 onwards.

We'll explore the challenges faced while building the new implementation, such as enriching ANRs with data from the previous app run, making sure the previous app session is finished properly and parsing ANR thread dumps into backend-friendly formats.

Composed for Success: Automatic Instrumentation in Jetpack Compose

As Jetpack Compose gains popularity for developing Android apps, it's crucial to ensure that apps built with it are reliable and bug-free. At Sentry, we've been working on making it easier for developers to monitor their apps by providing automatic instrumentation for capturing user interactions and navigation breadcrumbs.

In this talk, we'll discuss our journey of adding automatic instrumentation to the open-source Sentry Android SDK for Jetpack Compose and share best practices for capturing and analyzing user interactions and navigation events.

We’ll dive into

- Global Android system hooks
- Jetpack Compose internals
- Accessing Compose internals from Java and why
- A bit of Bytecode Manipulation
- Kotlin Compiler Plugins

Bytecode Transformations: Exploring new AGP APIs for instrumenting your app

Sometimes you want to automate some boring tasks (for example, measuring the execution time of annotated methods or logging method calls with their arguments) or modify third-party dependencies in your own favor.

The Android Gradle plugin (AGP) has been providing Transform API for such cases, but it's proved to be inefficient and may be the cause of slow builds. The new API is much more efficient and easier to consume, so one can directly start modifying bytecode with almost zero-setup.

This talk will cover the new transform API, how it compares to the old one, touch a little bit on the JVM bytecode internals and show how this API can be useful for automating otherwise tedious or even impossible, from the source code perspective, tasks.

As an example, we'll try to turn all android Logcat logs into Timber logs (even the ones coming from third-party dependencies), to feed all log streams into a single source.

2024 | London | droidcon Sessionize Event

October 2024 London, United Kingdom

2023 | Berlin | droidcon Sessionize Event

July 2023 Berlin, Germany

2022 | Berlin | droidcon Sessionize Event

July 2022 Berlin, Germany

Roman Zavarnitsyn

Mobile @ Sentry

Perg, Austria

Actions

Please note that Sessionize is not responsible for the accuracy or validity of the data provided by speakers. If you suspect this profile to be fake or spam, please let us know.

Jump to top