droidcon London 2025
2025-10-30..2025-10-31
London, United Kingdom
[droidcon London 2019, droidcon London 2022, Droidcon London 2023, droidcon London 2024, droidcon London 2025]
who it's for
android engineers, kotlin developers, mobile engineering managers, build engineers, ci/cd engineers, wearable developers, app security engineers
topics
Jetpack Compose modifiers; pausable composition in Compose; Kotlin regex techniques; Kotlinx Serialization for SavedState; Bazel on Android; custom Gradle plugins for testing; Perfetto performance tracing; coroutine suspension mechanics; lifecycle-aware coroutines APIs; Jetpack Navigation 3; AGP 9.0 updates; Android Studio AI Agent
| title | author | length |
|---|---|---|
| Understanding Compose modifiers and how their order affects UI | Marcin Moskała | 37m |
Claim: Jetpack Compose modifiers are the core drivers of layout, drawing and input, not mere properties, and modifier order changes constraints and drawing… | ||
| Make your composition pause | Andrei Shikov | 30m |
Compose runtime adds pausable composition in Compose 1.10: compiler-generated suspension points let the runtime slice initial composition into pause/resume… | ||
| Escape from Planet Regex - Kotlin to the Rescue | Ben Kadel | 39m |
Walks through Reax from literals and flags to greedy vs lazy quantifiers, character classes, capture groups and lookarounds, then shows exact Cotlin code… | ||
| Android Screenshot Testing on Autopilot | Cagdas Caglak | 41m |
Converts Jetpack Compose previews into runnable screenshot tests by using a KSP code generator that finds @Preview functions, emits JUnit 5 + Paparazzi test… | ||
| From Parcelable to @Serializable | Kuan-Ying Chou | 21m |
Shows how SavedState uses KotlinX Serialization to replace Parcelable boilerplate by annotating data classes with @Serializable and using top-level helpers… | ||
| 47 Refactorings in 45 minutes | Dmitry Kandalov | 37m |
Live-coding shows 47 refactorings in 45 minutes inside IntelliJ IDEA using the K2 Kotlin plugin while counting changes with a refactoring counter and running… | ||
| Effective collaboration with backend engineers | Romain Piel | 34m |
Defines concrete practices: write RFCs/proposals that include API-change sections and alternatives, publish OpenAPI specs to generate client and server code… | ||
| Kotlin and Compose Multiplatform patterns for iOS interop | John O'Reilly | 37m |
Kotlin 2.2.20 ships experimental Swift export while production teams rely on third‑party fixes: Sky (Swift‑Kotlin Interop Enhancer) restores sealed‑class… | ||
| Understanding keyboard shortcuts in Jetpack Compose | Thomas Künneth | 39m |
A sample app called keyboard shortcut demo demonstrates cross‑platform shortcut support by mapping a platform‑agnostic KeyboardShortcut class to Android’s… | ||
| You are the main thread: Multiplying your productivity with agents | Nelson Osacky | 33m |
Practical guide to running parallel dev agents: use Claude or Cursor via Cloud Code, write an agents.mmd file with build and formatter rules, and connect MCPs… | ||
| Bazel on Android: The Good, The Bad and The Ugly | Valera Zakharov, Erik Kerber | 41m |
Slack migrates Android builds to Bazel, builds the full app target and runs 45,000+ unit tests in CI, and measures ~70% faster test result times in CI with a… | ||
| No More "Someone Else’s Problem": Tackling Tech Debt at Scale | Florian Mierzejewski | 36m |
Company with 58 engineers, ~1,000 modules and 300 PRs/week builds a visibility pipeline that extracts SonarQube issues, stores them in an internal DB and… | ||
| Live App Architecture Debugging with Kotzilla & Koin | Arnaud Giuliani, Miguel Valdes Faura | 59m |
Live demo wires the Kotzilla SDK to a Koin app with one line and an Android Studio plugin that visualizes the Koin dependency graph and session timeline. The… | ||
| Mobile-First Setup for AI Coding | Moataz Soliman | 26m |
Shows a reproducible, mobile-first AI coding setup: cloud code with set 4.5 and opus 4.1 supply LLM power, context lives in a cloud.md inside the repo, and… | ||
| The Benevolent Gradle Overlord: Keeping Order | Aurimas Liutikas | 35m |
Shows how convention and binary plugins reduce build.gradle churn and how a strict build.json schema limits knobs to allowed toggles; demonstrates enforcement… | ||
| Surviving and fixing bugs in 3rd-party libraries | Yury Vlad, Andrei Belous | 39m |
Step‑by‑step options for third‑party crashes: reproduce with real data, use composite builds to edit and debug a library locally, then either publish a frozen… | ||
| Driving App Reliability with Real Time Monitoring and SLIs | Enrico Bruno Del Zotto, Dawid Wiącek | 37m |
Claims a deployable monitoring stack: a KMM library with Firebase + Google Cloud (BigQuery) that tags errors with a session ID per session so feature… | ||
| Form Frenzy to Form Framework | Akshay Chordiya | 28m |
A reusable form engine called FormKit renders form models with Jetpack Compose, uses MVVM plus a pluggable navigator and validator, and stores questions… | ||
| Building a Weather Agent on Android with Koog | Dean Djermanović | 34m |
Adds the Koog Kotlin dependency and an OpenAI LLM executor, builds an agent with an executor, system prompt, and model; implements two concrete tools—search… | ||
| Building an IDE plugin for clean code generation | Roman Kamyshnikov | 31m |
Builds an Android Studio plugin that clones API DTOs into editable domain models, recursively generates mappers, repository interface and implementation, DI… | ||
| Measuring and enforcing app health at scale | Jack Adams | 32m |
Trainline runs 30–40 Android engineers across 12 teams, 3 million LOC and 580+ modules and measures app health with Play Console vitals, Crashlytics + Firebase… | ||
| Advanced Techniques for Protecting Android Apps | Ed Holloway-George | 38m |
Shows concrete defenses: compute a CRC check on classes.dex at startup and block launch if it differs; verify runtime signing fingerprints via the Gradle… | ||
| How My Android App Learned to Talk to Plants | James Gatt | 23m |
An IoT greenhouse that collects sensor data with an ESP32S3 network of nodes and uploads JSON snapshots to a Flask API/MySQL backend routed via Cloudflare… | ||
| Overcoming JavaScript Unsecurities in WebViews | Balázs Gerlei | 34m |
Running JavaScript in Android WebViews is practical but risky: demos show file XHR exfiltration from app assets, JavaScript bridge token leak via timing/race… | ||
| Monetize your Android app the right way | Perttu Lähteenlahti | 33m |
Shows concrete numbers and a runnable path: Revenue SDK initializes, identifies (anonymous or app user ID), presents configurable native paywalls wired to… | ||
| Understanding the Kotlin to Dalvik bytecode translation | Ruben Pieters | 42m |
Walks through a Dalvik recompiler project that uncovers concrete translation bugs and debugging steps: builds go from Kotlin/Java → class files → D8 → DEX →… | ||
| When Attackers Go Mobile-First: What Developers Need to Know | Anique Sayed | 21m |
Claim: common defenses fail — 60% of Android devices run outdated OS, one in 400 devices is rooted, one in 2500 iOS devices jailbroken, three per thousand… | ||
| UX & Cognitive Accessibility | Fanny Demey, Marie Benoit | 39m |
Gives six concrete design rules—clear organization, enough time, understandable, predictable, adaptability, multiple ways to understand—and shows real app… | ||
| Low effort, High impact Android performance wins | Ben Weiss, Ajesh Pai | 38m |
Shows concrete wins: enabling the R8 optimizer yields real numbers — a partner sees 40% faster cold startups, 30% fewer ANRs, 25% better rendering and 14%… | ||
| Rebuilding Pebble: What a Difference a Decade Makes | Steve Penna | 47m |
Rebuilds the Pebble companion apps from scratch with a six‑person company and two mobile engineers using Kotlin Multiplatform, Compose Multiplatform and… | ||
| How Hard Can a List Be? A Tale of APIs, Perf, and People | Artemiy Sobolev | 25m |
A new Wear OS list component called TransformingLazyColumn provides a single dynamic height modifier that drives per‑item scaling and graphics layer… | ||
| From Debugging to Real-World Tuning: A Practical Guide to Compose Performance | Zheng Dai, Dingkui Jiang, Qifan Zhang | 32m |
TikTok relataes a reproducible Compose performance workflow: use Layout Inspector, BTrace-style traces and macrobenchmark to pinpoint whether bottlenecks sit… | ||
| A Busy Android App Developers' Guide to Perfetto | Rahul Ravikumar | 38m |
Perfetto traces collected via the ADB websocket and a ring buffer reveal CPU spikes, frame drops and a high-frequency binder/job churn during app startup… | ||
| Navigating Dependency Injection with Metro | Zac Sweers | 40m |
Metro is a Kotlin compiler plugin that implements compile‑time DI by mutating FIR and generating IR so builds do one compilation instead of multiple, claiming… | ||
| Dual booting for testing and curiosity | Niall Scott | 22m |
Shows how to run a second Android installation on real hardware using GSIs and Dynamic System Updates, with step‑by‑step ADB commands to prepare a Pixel… | ||
| Building a Mobile Game Without an Engine, a Budget, or a Clue | James Cullimore | 34m |
Builds a one‑hand mobile RPG in native Kotlin without Unity or a backend, using Mapbox for the map, XML UI now migrating to Compose, AI plus Fiverr for art… | ||
| Wearables and Wireless: Bluetooth Internals for the Brave | Nikheel Vishwas Savant | 41m |
Covers concrete failure modes and fixes for wearables: ghost advertisements from stopping before callbacks, rapid start/stop floods that require reboots, and… | ||
| From ImageView to Compose: Architecting Image Loading | Zeyu Zhang, Rui He | 41m |
Jetpack Compose image loading needs a different architecture: sizing, downsampling, cache keys, prefetching in lists, and scaling semantics require explicit… | ||
| What's new in AGP 9.0 and beyond | Chris Warrington | 31m |
AGP 9.0 is a breaking major release that requires Gradle 9, lands a R8 keep-class change (default constructors no longer implied but kept behind a flag for… | ||
| 3D content with Compose Multiplatform | Erik Hellman | 33m |
Combining Compose Multiplatform with real 3D engines proves trickier than it sounds because Compose/Skia uses 2D orthographic rendering while 3D engines… | ||
| Building Androidify: an AI-powered Android experience | Rebecca Franks, Rob Orgiu | 35m |
An open source Android app converts a user photo into an Android bot using Firebase AI Logic SDK plus ML Kit and a custom fine‑tuned imagine model; image… | ||
| Crafting delightful Camera & Media experiences | Kristina Simakova, Mayuri Khinvasara Khabya | 38m |
Jetpack CameraX and Media3 deliver concrete features: Low light boost with simple one-line integration, real‑time ML effects and a green‑screen pipeline that… | ||
| Coroutine Suspension Mechanics | Ioannis Anifantakis, Andrea Della Porta | 39m |
Explains that the Kotlin compiler rewrites every suspend function into a continuation‑passing signature (adds a continuation parameter) and generates a tiny… | ||
| A pragmatic approach to WebViews | Patrick Brochado | 23m |
Company replaces three platform implementations with one web-rendered feature set and reports faster delivery and instant live updates deploy live updates… | ||
| Compose at Scale: Stop Unnecessary Recomposition | Peng Jiang | 28m |
Claims that tiny code changes can create big CPU bottlenecks by breaking Compose’s skip logic, with common culprits being unstable parameter types, captured… | ||
| App Work Ahead! Architecture Design for Design Libraries | R. Lee Creasy | 37m |
A design library evolved over 5 years from XML to Compose, layering on Material and automating tokens for Android, web and iOS; it delivers explicit… | ||
| What's new in Android Studio's AI Agent | Jose Alcérreca, Simona Milanovic | 42m |
Android Studio Canary’s agent actually runs tools (write file, read file, find files, version lookup, get gradle artifact, get unit test, analyze current file)… | ||
| Digging Deeper with Subcomposition + Custom Compose Layouts | Huyen Tue Dao | 44m |
Explains when to replace rows/columns with a custom layout to move heavy math from composition into the measure phase, showing a timeline demo that drops from… | ||
| Shaders are awesome | Sebastiano Poggi | 18m |
Shows how to use RuntimeShader with AGSL and SKSL to write fragment shaders for Compose Multiplatform UIs, using uniforms like resolution and time and UV… | ||
| Structured Concurrency: The paradigm shift | Marcin Moskała | 32m |
Explains structured concurrency with concrete Kotlin coroutines patterns and pitfalls: use coroutineScope/nursery semantics so child coroutines cancel and… | ||
| A deep dive on the lifecycle-aware coroutines APIs | Manuel Vicente Vivo | 30m |
Shows when UI should stop collecting (maps location example) and which lifecycle APIs actually stop work: repeatOnLifecycle, flowWithLifecycle… | ||
| White-Labelling Your Compose and XML UI with Design Tokens | Joshua Hughes | 34m |
Nutmeg builds a single Android codebase that white‑labels into Nutmeg and Chase UK by mapping Global, Semantic and Component tokens so components ask for… | ||
| How a Single ß Can Break Everything | Vladimir Jovanović | 31m |
Android stores strings as UTF‑16 so emojis become surrogate pairs and a composed family emoji can make .length return 11, not 1; UTF‑8 dominates network IO but… | ||
| Passkeys on Android | Mario Bodemann | 29m |
A demo Halloween game called Trick or Treat game illustrates passkeys on Android by actually creating credentials, sending a JSON credentialCreateOptions to an… | ||
| Custom Coroutine Contexts: Seamless TestDispatcher injection | Remco Mokveld | 36m |
Explains a concrete technique that avoids constructor dispatcher injection by adding a custom CoroutineContext element that supplies a DispatcherProvider and… | ||
| Build times breaking your flow? Learn how to make them fast! | Louis Jacomet | 40m |
Shows concrete wins and how they’re achieved: a worst‑case fresh Gradle build downloads and configures everything and can take ~8 minutes, a fully up‑to‑date… | ||
| Build a modern and expressive Wear OS app | Chiara Chiappini | 22m |
Material3 Expressive arrives on Wear OS via Compose for Wear 1.5 and shows concrete migration steps: use screen scaffold to get automatic time text and scroll… | ||
| So I tried to port my app to Android XR 🕶️ | Julien Salvi | 43m |
Porting an existing cloud phone app to Android XR with Compose XR + Android XR (alpha) proves partly successful: core UI runs in XR using panels, orbiters and… | ||
| Beyond the UI: Compose as a Foundation for Multiplatform Apps | Ash Davies | 34m |
Claims that Compose runtime can manage app state (not just UI) and that Compose Multiplatform removes duplicate presentation logic across Android, desktop and… | ||
| Mastering Text Input in Compose | Meghan Mehta | 24m |
Shows the new state-based TextField API and replaces onValueChange with input transformation and visualTransformation with output transformation, using a… | ||
| Prepare for Android XR with Quick Wins and Powerful Features | Patrick Fuentes, Jay Abi-Saad | 32m |
Galaxy XR devices arrive and the Jetpack XR SDK is live in developer preview with over 50 published made‑for‑XR apps; use Jetpack Compose for XR (subspace… | ||
| Compose Multiplatform for iOS: Ready for Production Use | Sebastian Aigner | 43m |
Compose Multiplatform is stable on iOS with stable APIs with deprecation cycles, hits 60 and 120 fps in scrolling tests, and adds a parallel rendering mode… | ||
| Views, Compose, Multiplatform - Oh My! | Jimmy Ray, Greg Astley | 38m |
Auto Trader moves a server‑driven UI from Views to Jetpack Compose and then Compose Multiplatform incrementally, replacing components with Compose views, using… | ||
| Kover Your Code: A Practical guide to Android Test Coverage | Eyad Zebdeh | 14m |
A simple notes app demonstrates integrating Kover into Gradle, adding filters to exclude DI and UI classes, and running cover verify in GitHub Actions to… | ||
| How to Not Lose Your Identity in 2035 | Mikhail Dudarev | 39m |
Roadmap for a working mobile digital ID: enrollment via e‑passport NFC or face/pass PIN, storage of non-extractable keys in Android hardware keystore or… | ||
| Creative Coding with Kotlin | Eeva-Jonna Panula | 37m |
Shows creative coding with Kotlin using Compose Canvas and Compose Multiplatform, building a ghost animation with interactive flag-shaped options drawn on… | ||
| Edge AI: Driving Agentic Workflows and Productivity | Stuart Hubbard | 18m |
Claims on-device AI with the AI Suite SDK running computer vision and small LLMs, cutting cloud tokens and latency while keeping data local. Demonstrations… | ||
| Guide to Foreground Services on Android | Domen Lanišnik | 38m |
Step-by-step guide to implement and harden Android foreground services including manifest entries, runtime permissions, and startForeground timing rules with… | ||
| Multi-coding agent workflows | Kevin Tang | 34m |
A background coding agent runs inside Android Studio using isolated git work tree sandboxes to build, lint and autofix merges while the main editor stays… | ||
| Maximize CI/CD efficiency using AI and a vertically integrated stack | Naveen Nazimudeen | 25m |
Shows an actual Bitrise setup that runs an agentic AI stack which analyzes failed builds, spawns a fixer build that edits code, opens a PR and attaches an… | ||
| Navigating the future with Jetpack Navigation 3 | Don Turner | 36m |
Live-coding demonstrates Jetpack Navigation 3 by building a two-screen chat app where navigation is literally adding/removing keys from a Compose-backed list… | ||
| Blazing Fast UI Development with Compose Hot Reload | Márton Braun | 36m |
Live demos show Compose Hot Reload applied to a real Compose Multiplatform desktop app (Cotling Conf sample on GitHub) with about 20 successful reloads during… | ||
| nothing matches | ||